Рисование картограммы с matplotlib?
-
26-09-2019 - |
Вопрос
В случае, если кто-то не знает: картограмма это тип карты, где какое-либо страновое / регионное числовое числовое свойство масштабирует соответствующие области, так что плотность свойства (близкая) постоянная. Пример
от worldmapper.org.. Отказ В этом примере страны масштабируются по их населению, что привело к почти постоянной плотности населения.
Само собой разумеется, это действительно круто. Кто-нибудь знает библиотеку на основе MatPlotlib для рисования таких карт? Метод, используемый в WorldMapper.org, описан в (1), поэтому он удивил меня, если никто еще не реализовал ...
Я также заинтересуюсь услышать о других библиотеках картограммы, даже если они не сделаны для Matlotlib.
(1) Майкл Т. Гастнер и Медж Ньюман, диффузионный метод для производства плотности - выравнивающие карты, ProC. Наклон Акад Рассуждать США, 101, 7499-7504 (2004). Доступны на архив.
Решение
Есть это, Однако, хотя он основан и другой алгоритм (и хотя он на сайте ESRI, это не требует ArcGIS). Конечно, как только у вас есть картограмма, вы можете построить его в MatPlotlib.
Другие советы
Здесь Является ли плагин JavaScript для изготовления картограммов с использованием D3 D3. Это хорошее, простое решение, если вы не слишком беспокоитесь о размерах регионов. Если важно точность, существуют другие варианты, которые дают вам больше свободы играть с параметрами алгоритма, чтобы добраться до более точного результата.
Вот два отличных автономных программах, о которых я знаю:
Лопатка очень прост в использовании. Просто дайте ему Sharpfile, скажите, что атрибут использовать для масштабирования и установить несколько параметров точности. Если есть какие-либо сомнения, эта почта описывает процесс.
Carto3F является более сложным и обеспечивает больше точности, хотя это немного сложно выяснить - множество параметров параметров без особой документации, объясняющей их.
Есть также Qgis cartogram Plugin, написано в Python. Хотя я не смог добраться до работы, поэтому не могу прокомментировать этот.
Короче, нет. Но Ньюман имеет отличную небольшую реализацию метода своего и гастенера на его сайте. Отказ Установка этого легко и работает из командной строки. Вот пример рабочего процесса, используя это программное обеспечение, которое работало для меня.
- Вычислить сетку по оценкам плотности в течение некоторой области, например, в Python. Храните его как матрица номеров.
- Запустить
cart
Программа с матрицей вашей плотности в качестве ввода из командной строки или из в качестве подпроцесса в Python. - Программа возвращает список новых координат для каждой точки сетки.
- Трубуйте ваши очки для шейпсов через
interp
Программа и в новый PhartFile, чтобы получить трансформированную карту.
На главной странице есть хорошие инструкции.
То geoplot.cartogram функция внутриГеооплот: визуализация геопространственных данных - Geoplot 0.2.0
Говорит, что это библиотека геопространственной заговора на высоком уровне Python и расширение для Cartopy и Matplotlib.