Pregunta

En caso de que alguien no lo sabe: Un cartograma es un tipo de mapa donde algunos país / escalas propiedad numérica región dependiente de las respectivas regiones de manera que la densidad de que la propiedad es (cerca de) constante. Un ejemplo es

Ejemplo cartograma

worldmapper.org . En este ejemplo, los países son escalados de acuerdo con su población, resultando en cerca de constante-densidad de población.

Ni que decir tiene, esto es realmente genial. ¿Alguien sabe de una biblioteca basada en Matplotlib para la elaboración de estos mapas? El método utilizado en worldmapper.org se describe en (1), por lo que me sorprendería si nadie ha implementado esto todavía ...

También estoy interesado en escuchar acerca de otras bibliotecas Cartograma, incluso si no están hechas para Matplotlib.

(1) Michael T. Gastner y M. E. J. Newman, método basado en la difusión para la producción de mapas de densidad de compensación, Proc. Nat. Acad. Sci. EE.UU., 101, 7499-7504 (2004). Disponible en arXiv .

¿Fue útil?

Solución

Hay este , aunque se basa y un algoritmo diferente (y aunque es en el sitio de ESRI, que no requiere ArcGIS). Por supuesto, una vez que tenga el cartograma puede trazar en matplotlib.

Otros consejos

Aquí está una Javascript plugin para hacer uso de cartogramas D3. Es una buena solución simple si usted no está demasiado preocupado por las regiones estando dimensionadas con precisión. Si la precisión es importante, hay otras opciones disponibles que le dan más libertad para jugar con los parámetros del algoritmo para llegar a un resultado más preciso.

Aquí hay dos grandes programas independientes que conozco:

Scapetoad es muy fácil de usar. Simplemente darle un archivo de formas, decirle qué atributo a usar para el escalado, y establecer unos parámetros de exactitud. Si hay alguna duda, este post describe el proceso.

Carto3F es más complejo y permite una mayor exactitud, aunque es un poco más complicado de entender -. Un montón de ajustes de parámetros sin mucha documentación explicarlos

También hay un QGIS cartograma complemento , escrito en Python. Aunque no he sido capaz de conseguir que funcione, así que no puedo comentar sobre eso.

En resumen, no. Pero Newman tiene una excelente aplicación poco de su método y de Gastner en su página web . Su instalación es fácil y funciona desde la línea de comandos. He aquí un ejemplo de un flujo de trabajo utilizando este software que trabajó para mí.

  1. Compute una rejilla de densidad estima sobre alguna región, por ejemplo, en Python. Almacenarla como una matriz de números.
  2. Ejecutar el programa cart con su matriz densidad como entrada desde la línea de comandos o como subproceso en Python.
  3. El programa devuelve una lista de las nuevas coordenadas de cada punto de la cuadrícula.
  4. Tubería sus puntos shapefile a través del programa interp y en un nuevo archivo de formas para conseguir el mapa transformado.

Hay instrucciones agradables en la página principal.

La función geoplot.cartogram en Geoplot: visualización de datos geoespaciales - geoplot 0.2.0

dice que es una biblioteca de trazado geoespacial alto nivel Python, y una extensión a cartopy y matplotlib.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top