Подтвердить что ты не робот

Рисование картограмм с помощью Matplotlib?

Если кто-то не знает: A cartogram - это тип карты, где некоторые зависящие от страны/региона числовые шкалы свойств соответствующие области, так что плотность этого свойства (близка к) постоянна. Пример:

Example cartogram

из worldmapper.org. В этом примере страны масштабируются в соответствии с их населением, что приводит к почти постоянной плотности населения.

Излишне говорить, что это действительно здорово. Кто-нибудь знает библиотеку на основе Matplotlib для рисования таких карт? Метод, используемый на worldmapper.org, описан в (1), поэтому меня это удивило бы, если бы никто не реализовал это еще...

Мне также интересно узнать о других библиотеках картограмм, даже если они не сделаны для Matplotlib.

(1) Майкл Т. Гастнер и М. Э. Ньюмен, Диффузионный метод для создания карт выравнивания плотности, Proc. Туземный Акад. Sci. USA, 101, 7499-7504 (2004). Доступно в arXiv.

4b9b3361

Ответ 1

Там этот, хотя он основан и отличается от другого алгоритма (и хотя он на сайте ESRI не требует ArcGIS). Конечно, как только у вас есть картограмма, вы можете построить ее в matplotlib.

Ответ 2

Здесь является плагин Javascript для создания картограмм с использованием D3. Это хорошее, простое решение, если вы не слишком обеспокоены тем, что регионы точно рассчитаны. Если точность важна, есть и другие доступные варианты, которые дают вам больше свободы играть с параметрами алгоритма, чтобы получить более точный результат.

Вот две большие автономные программы, о которых я знаю:

Scapetoad очень прост в использовании. Просто дайте ему шейп файл, скажите ему, какой атрибут использовать для масштабирования, и задайте несколько параметров точности. Если есть какие-либо сомнения, этот пост описывает процесс.

Carto3F более сложный и обеспечивает большую точность, хотя немного сложнее выяснить - множество настроек параметров без большой документации, объясняющей их.

Существует также плагин картографии QGIS, написанный на Python. Хотя я не смог заставить его работать, поэтому не могу комментировать этот.

Ответ 3

Короче говоря, нет. Но у Ньюмена есть отличная небольшая реализация его метода Гастнера