Construindo mapas de calor eficazes?

65

Usando ArcGIS, QGIS, Grass e / ou GVSIG:

  • Quais são algumas das ferramentas e processos envolvidos na construção de mapas de calor eficazes?
  • Quais são os plugins envolvidos?
  • Quais são os principais requisitos de dados?
  • Quais são algumas das falhas nos mapas de calor existentes?
  • Quais são alguns dos problemas que os mapas de calor não conseguem cobrir de maneira eficaz?
  • Como não fazer um mapa de calor?
  • Existem alternativas melhores (no mesmo contexto) do que o mapa de calor para representação de dados?
dassouki
fonte
Apesar de não usar qualquer uma das ferramentas que você especificou, você pode querer ter um olhar para este script Python bem jjguy.com/heatmap
radek
11
Dassouki, você poderia esclarecer o que você quer dizer com "mapa de calor"? A Wikipédia parece achar que é uma versão de uma matriz de valores. Isso é sutil, mas importante, diferente de todas as respostas neste encadeamento, que supõem que significa simplesmente um mapa de qualquer atributo baseado em grade (ou imagem), especialmente um que tenha sido interpolado na grade a partir de dados pontuais. As respostas para todas as suas perguntas com marcadores serão diferentes para um verdadeiro mapa de calor.
whuber

Respostas:

74

Esta pergunta foi convertida em Wiki da Comunidade e a wiki bloqueada porque é um exemplo de pergunta que busca uma lista de respostas e parece ser popular o suficiente para protegê-la do fechamento. Deve ser tratado como um caso especial e não deve ser visto como o tipo de pergunta incentivada neste ou em qualquer site do Stack Exchange, mas se você deseja contribuir com mais conteúdo, sinta-se à vontade editando esta resposta .


Existem pelo menos dois tipos diferentes de mapas de calor:

  1. Mapas de calor representando concentração de pontos, e
  2. Mapas de calor representando distribuições de valores de atributos

Todo método tem vantagens e problemas, receio que entrar em detalhes esteja muito além dessas perguntas e respostas.

Vou tentar listar alguns métodos e funções para QGIS e GRASS.

Concentração de pontos

Se você estiver rastreando o movimento de animais selvagens, veículos, etc., pode ser útil avaliar regiões com alta concentração de mensagens de localização.

Ferramentas: por exemplo, plug-in QGIS Heatmap (disponível nas versões> 1.7.x) ou GRASS v.neighbors ou v.kernel

Distribuições de valores de atributo

Aqui, estamos basicamente falando mais ou menos sobre métodos de interpolação. Os métodos incluem:

  1. IDW

    Dependendo da implementação, isso pode ser global (usando todos os pontos disponíveis no conjunto) ou local (limitado pelo número de pontos ou distância máxima entre pontos e posição interpolada).

    Ferramentas: plugin de interpolação QGIS (global), GRASS v.surf.idw ou r.surf.idw (local)

  2. Splines

    Novamente, grande número de possíveis implementações. B-Splines são populares.

    Ferramentas: GRASS v.surf.bspline

  3. Kriging

    Método estatístico com vários subtipos.

    Ferramentas: GRASS v.krige (graças a om_henners pela dica) ou usando R.

underdark
fonte
11
Existe uma interface através do GRASS para kriging, v.krige ( grass.osgeo.org/wiki/V.krige_GSoC_2009 ), mas ainda requer R e os vários pacotes e ligações R mencionados na página do GRASS Wiki.
Om_henners
Desde o QGIS 2.8, existe um renderizador Heatmap para camadas de pontos. Não há necessidade de criar novos dados.
Alexandre Neto
34

Estatisticamente, eis como você deve fazer um mapa de calor:

1) Integrar recursos de pontos. A idéia da integração é pegar pontos que devem ser considerados coincidentes e fundi-los como um único local. Eu gosto de usar a análise do vizinho mais próximo e usar um valor apropriado a partir daí. (Por exemplo, ao fazer um mapa de calor de crimes, eu uso o 1º vizinho mais próximo médio para o conjunto de dados de parcelas subjacente contra o qual os crimes são geocodificados).

2) Colete eventos . Isso cria um peso espacial para todos os seus pontos integrados. Por exemplo, se você tiver 5 eventos em um único local, ele se tornará um ponto com o peso 5. Isso é essencial para os próximos dois passos. Se você precisar agregar um atributo nos eventos agrupados, ou seja, eventos diferentes têm maior peso, será possível usar uma junção espacial um a um . Use a saída 'coletar evento' como destino e seus eventos integrados originais como os recursos de junção. Defina as regras de mesclagem do mapa de campo combinadas estatisticamente o atributo nos eventos integrados (normalmente com um SUM, embora você possa usar outras estatísticas).

3) Determine o pico da autocorrelação espacial usando o I de Global Moran . Assim como diz, execute o I global de Moran em diferentes intervalos para determinar a banda de pico da autocorrelação espacial na escala apropriada para a análise que você está fazendo. Você pode executar o vizinho mais próximo novamente nos eventos coletados para determinar o intervalo de início dos testes I do seu moran. (por exemplo, use o valor máximo para o primeiro vizinho mais próximo)

4) Execute o Getis-Ord Gi * . Use uma faixa de distância fixa com base na análise I do seu moral ou use a banda de distância fixa como uma zona de indiferença. Seu peso espacial dos eventos de coleta é o seu campo de contagem numérica. Isso fornecerá z-scores para cada ponto do evento em seu conjunto.

5) Execute o IDW em relação aos seus resultados no Getis-Ord Gi *.

Esse resultado é significativamente diferente do que você obtém com a densidade do kernel. Ele mostrará onde os valores altos e baixos estão agrupados em vez de apenas onde os valores são altos, independentemente do cluster, como na densidade do kernel.

blord-castillo
fonte
20

Enquanto eu gosto de mapas de calor, percebo que eles são frequentemente mal utilizados.

Normalmente, o que eu vi é um processo pelo qual a cor de cada pixel é baseada no resultado de uma função de distância inversa ponderada aplicada a uma coleção de pontos. Sempre que um mapa tem muitos marcadores de pontos sobrepostos, acho que vale a pena considerar um mapa de calor.

Aqui está uma API baseada na Web .

GeoChalkboard tem um bom tutorial para isso .

Você pode usar o IDW no ArcGIS.

Kirk Kuykendall
fonte
7
Lembre-se de que o IDW é altamente sensível aos locais de coleta de dados. Se os dados estiverem agrupados, por exemplo, você poderá obter anomalias matemáticas ruins.
Reed Copsey
@ Copeed Copeed Qual alternativa você sugeriria?
fmark
2
@fmark: Há muitas rotinas de interpolação você pode usar em vez de IDW, incluindo vizinho naturais / abordagens baseadas triangulação, Kriging, estriado / tensão mínima, etc.
Reed Copsey
@ Realmente nunca me preocupo com a correção matemática dos mapas de calor (talvez eu deva estar). Mas acho que eles comunicam clusters de maneira útil em muitas situações. Aqui está um exemplo de mapa que eu acho que poderia ser útil renderizado como um mapa de calor: www2.clustrmaps.com/counter/maps.php?url=http://clustrmaps.com
Kirk Kuykendall
2
Eu acho que eles são uma ótima ferramenta. A correção matemática / estatística provavelmente é importante apenas se você estiver usando os resultados para a tomada de decisões, mas se for para transmitir o sentido geral da distribuição, a IDW provavelmente está bem. (É mais uma questão de clusters causando grandes "skews" nos resultados HeatMap, especialmente entre os clusters, devido a anomalias de ordem matemática.)
Reed Copsey
12

Para mapas simples de calor e geração de linhas, usei QGis com a integração Grass:

  1. Carregar pontos de dados
  2. Carregar uma forma limitadora - por exemplo, limite do condado
  3. Criar um conjunto de mapas Grass
  4. Abra a caixa de ferramentas Grass e clique na lista de módulos para procurar cada ferramenta
  5. Carregue o módulo v.in.ogr.qgis e carregue os dados do ponto e a forma do limite, lembrando-se sempre de clicar em visualizar saída de cada um - forneça a cada um um nome útil como pointdata e maskshape
  6. Converta a forma de máscara em uma varredura para usá-la como uma máscara com v.to.rast e adicione ao conjunto de mapas - chame-o de algo como maskraster - isso pode levar tempo para polígonos complexos.
  7. Carregue o módulo r.mask para forçar a próxima ação a ser limitada à região do buffer.
  8. Execute v.surf.rst para produzir uma grade interpolada a partir de pointdata - escolha a coluna apropriada como o campo de atributo para fazer a interpolação e chame-a de algo como rastersurface . Essa é a parte que leva tempo e gera uma varredura que pode ser usada como um mapa de calor ou pode ser sombreada em 3D.
  9. Feche a caixa de ferramentas Grama
  10. Use o plug-in GDAL Raster Contours, escolhendo o raster GRASS como entrada; deixe o valor dos níveis padrão em 10 e escolha um diretório de saída onde os contornos do shapefile serão salvos. Verifique o "Nome do atributo" e digite um nome.

NB: Para que isso funcione, os conjuntos de dados devem estar na mesma projeção!

Adrian
fonte
4

Penso que esta questão foi amplamente respondida, exceto por alguns pontos sobre os problemas.

Os mapas de calor podem ser ótimos, mas uma falha e um problema clássicos estão na interpretação. Considere a diferença entre um mapa de calor dos eventos criminais em comparação com um mapa (calor ou não) da taxa / proporção de crimes. Embora o mapa de calor de eventos possa ser útil em termos de identificação da densidade geral do evento, ele é cego como uma estimativa de risco, mas muitas vezes seria interpretado ou mal utilizado dessa maneira. Considere o mesmo número de eventos em uma região do mesmo tamanho e forma, mas com uma população diferente, enquanto o crime pode estar concentrado em uma área, isso pode ser simplesmente porque há mais pessoas naquele espaço. Além disso, pode ser difícil modelar as taxas de dados de eventos, como crimes, porque, para produzir uma varredura de mapa de calor, elas podem exigir um evento como modelo de população, mas as pessoas não costumam ficar paradas.

Uma segunda questão é que um mapa de calor se limita a considerar uma única escala espacial, e a seleção dessa escala espacial, ou seja, o tamanho do kernel ou a taxa de decaimento, pode ser complicada e depende dos objetivos do estudo, mas deve ser justificada. . Se o objetivo é identificar o centro do aglomerado mais forte e a escala na qual ele ocorre (talvez para identificar a fonte de um surto de doença e um fator para sua disseminação), uma opção melhor pode ser considerar escalas múltiplas. Com ponderações apropriadas proporcionais à balança / área para produzir uma varredura tridimensional, onde os máximos locais na varredura de escala espacial 3D indicam a localização do centro dos clusters e seus respectivos tamanhos e a persistência entre as balanças.

Craig Stobbs
fonte
11
Você faz alguns pontos muito válidos. Esses dois problemas são realmente problemas clássicos da geografia. A primeira questão está relacionada à interpretação da não uniformidade subjacente do espaço, ou seja, como a distribuição de pessoas não é uniforme (com algumas áreas escassamente povoadas), a oportunidade para o crime também não é uniforme. O padrão em um é forçado pelo padrão no outro. A segunda questão da escala faz parte do Problema da Unidade Local Modificável (MAUP), que afetará qualquer medida dependente de uma área para medida, por exemplo, densidade. Este é um problema clássico na maioria dos trabalhos geográficos.
WhiteboxDev
Considere também os polígonos de Thiessen como uma visão inicial dos padrões espaciais. Eles são bastante simples, mas também são capazes de mostrar muitos detalhes, são um interpolador exato e parecem contornar alguns dos problemas de escala que afetam outros métodos de interpolação mais sofisticados - gislandscapeecology.blogspot.com/2016/04/…
Tom Dilts