Pergunta

Caso alguém não saiba: um Cartograma é um tipo de mapa em que algumas propriedades numéricas dependentes de país/região escalam as respectivas regiões, para que a densidade dessa propriedade seja (próxima de) constante. Um exemplo é

Example cartogram

a partir de Worldmapper.org. Neste exemplo, os países são escalados de acordo com sua população, resultando em densidade populacional quase constante.

Escusado será dizer que isso é muito legal. Alguém conhece uma biblioteca baseada em matplotlib para desenhar esses mapas? O método usado em worldmapper.org é descrito em (1), então me surpreenderia se ninguém implementou isso ainda ...

Também estou interessado em ouvir sobre outras bibliotecas de cartogramas, mesmo que não sejam feitas para Matplotlib.

(1) Michael T. Gastner e Mej Newman, método baseado em difusão para produzir mapas equalizadores de densidade, Proc. Nat. Acad. Sci. EUA, 101, 7499-7504 (2004). Disponível em arxiv.

Foi útil?

Solução

isto, embora seja baseado e um algoritmo diferente (e embora esteja no site da ESRI, não requer ArcGIS). Obviamente, depois de ter o cartograma, você pode plotá -lo no matplotlib.

Outras dicas

Aqui é um plug -in JavaScript para fazer cartogramas usando D3. É uma solução boa e simples se você não estiver muito preocupado com o tamanho das regiões com precisão. Se a precisão for importante, existem outras opções disponíveis que oferecem mais liberdade para jogar com os parâmetros do algoritmo para obter um resultado mais preciso.

Aqui estão dois ótimos programas independentes que conheço:

Scapetoad é muito fácil de usar. Basta dar um shapfile, dizer qual atributo usar para a escala e defina alguns parâmetros de precisão. Se houver alguma dúvida, esta postagem descreve o processo.

O carto3f é mais complexo e permite maior precisão, embora seja um pouco mais complicado descobrir - muitas configurações de parâmetros sem muita documentação as explicando.

Há também um Qgis cartogram plugin, escrito em Python. Embora eu não tenha sido capaz de fazê -lo funcionar, não posso comentar sobre isso.

Em suma, não. Mas Newman tem uma excelente pouca implementação do método dele e de Gastner em seu site. Instalá -lo é fácil e funciona na linha de comando. Aqui está um exemplo de fluxo de trabalho usando este software que funcionou para mim.

  1. Calcule uma grade de estimativas de densidade em alguma região, por exemplo, em Python. Armazene -o como uma matriz de números.
  2. Execute o cart Programa com sua matriz de densidade como entrada da linha de comando ou como subprocesso no Python.
  3. O programa retorna uma lista de novas coordenadas para cada ponto de grade.
  4. Vá seus pontos de shapefile através do interp programa e em um novo shapefile para obter o mapa transformado.

Existem boas instruções na página principal.

o geoplot.cartogram função emGEOLOT: Visualização de dados geoespaciais - Geoplot 0.2.0

Diz que é uma biblioteca de plotagem geoespacial de Python de alto nível e uma extensão para a cartopia e matplotlib.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top