Criando “mapa de calor” baseado em polilinha a partir de trilhas GPS?

30

Neste inverno, planejo rastrear meu esqui alpino / snowboard usando um GPS. A maior parte do meu percurso ocorrerá no mesmo resort. Eu gostaria de poder criar uma espécie de "mapa de calor" que mostre a quantidade de execuções que eu fiz em uma determinada área. À medida que adiciono mais e mais traços de GPS ao meu banco de dados, meu objetivo seria ver uma espécie de mapa de calor linear das áreas mais percorridas. Dada a natureza do esqui alpino, seria de esperar que as linhas de teleférico em subidas fossem as "mais quentes", porque serão os únicos lugares visitados repetidamente.

Dado que 1) minha pista não será sempre a mesma e 2) a área coberta após uma "corrida" pode ter algumas centenas de metros de largura, o que pode ser a melhor maneira de analisar esses dados "lineares" para criar uma classificação do mapa de calor? Meu pensamento era amortecer as linhas e, em seguida, cruzar os polis para fazer uma espécie de coisa do diagrama de Venn. Minha preferência é usar tecnologias de código aberto. Eu tenho o QGIS e o PostGIS carregados e disponíveis.

ATUALIZAÇÃO : Em relação à resposta de @ blah238, eu estava pensando em algo que poderia "coletar" o número de passes ("corridas") em uma área e simbolizar a contagem. Conceitualmente, isso seria semelhante ao ArcGIS " Collect Events " (mas para linhas, não pontos) ou Collapse Dual Lines To Centerline (mas para várias linhas aproximadamente na mesma área).

Um exemplo mais visual de um conceito semelhante pode ser um mapa de fluxo de tráfego, onde áreas altamente congestionadas equivaleriam a áreas / pistas de esqui "muito viajadas":

Mapa de tráfego do Google

Li as seguintes perguntas que podem dar algumas idéias, mas elas realmente não abordam o que estou tentando realizar:

Trajetórias de cluster (dados GPS de pontos (x, y)) e Mineração dos dados

Gerenciando erros com rotas GPS (referencial teórico?)

RyanDalton
fonte
Supondo que você usaria dados GPX, ele deveria apenas fazer leituras latinas / longas em intervalos, portanto já deve estar em recursos pontuais. Você não seria capaz de usar um mapa de calor nisso? Ou você não está usando um dispositivo compatível com GPX?
RomaH 26/11/12
Ah, er. Eu interpretei mal o que você estava querendo .. Deixa pra lá.
RomaH 26/11/12
@RomaH, na verdade, você pode muito bem ter algo com sua ideia de usar os pontos para gerar um mapa de calor em vez de usar as linhas. Eu não tinha pensado em usar os pontos de origem antes, então isso é algo que definitivamente vou investigar.
RyanDalton
Você está lidando com um campo em que, como uma rua, possui arestas bem definidas. Se você deseja criar um modelo de linha, pode fazer várias sobreposições de polietileno, junções e usar o plug-in point2one para fazer um mapa de linhas com valores herdados. Mas então você precisa decidir a que distância é necessário esquiar para justificar um novo recurso de linha. Pessoalmente, eu ficaria feliz com uma solução de mapa de calor, mas, novamente, não conheço suas necessidades.
RomaH 27/11/12
Eu me deparei com essa pergunta, que é uma maneira muito legal de realizar essencialmente a mesma coisa, mas usando os GPS Track Points para criar o mapa de calor.
RyanDalton

Respostas:

17

Eu trabalhei um pouco nisso no GeoTools / GeoServer estendendo a transformação de renderização de mapa de calor para suportar outras geometrias que não pontos.

Mapa de calor das entregas de pizza

Ainda não terminou, mas você pode obter o ramo de recursos do meu repositório no GitHub .

A captura de tela é das trilhas de GPS de quando trabalhei como motorista de entrega de pizza.

smithkm
fonte
Ainda não está produzindo geometrias vetoriais, mas está coletando sobreposições para fornecer um valor mais alto.
smithkm
alguma idéia de como obter esse efeito com apenas postgis? ou qgis?
Chrismarx
15

Aqui está um bom tutorial para fazer exatamente isso usando o MapBox e o TileMill :

Captura de tela

blah238
fonte
11
Concordado, esse conceito é quase idêntico e pode ser feito facilmente em qualquer SIG. Mas isso está basicamente sugerindo "apenas deixe todas as suas faixas vermelhas com um buffer verde claro" e elas se destacarão no mapa? Para efeito visual, definitivamente trabalharei. Acho que originalmente pensava em tentar algo mais "analítico" que pudesse mostrar "contagens" de "execuções" neste exemplo. Vou continuar refletindo sobre isso.
RyanDalton
@ blah238 Eu estava procurando um exemplo semelhante ... muito obrigado !!
Sunil
11
@ blah238, Depois de pensar um pouco mais, você forneceu uma resposta muito válida para minha pergunta inicial. Eu deveria ter sido mais claro em meus pensamentos. Obrigado pela sua resposta, e atualizei minha pergunta para refletir com mais precisão o que estava tentando alcançar. Agradeço a ajuda.
RyanDalton
5

aqui está minha abordagem simples:

  1. crie um novo mapa no umap: http://umap.openstreetmap.fr/en
  2. clique em Importar dados e selecione todos os arquivos gpx que você possui e faça o upload deles no mapa (você pode importar todos eles de uma vez)
  3. insira Editar configurações do mapa> Propriedades padrão, escolha opacidade 0,25, peso 10.

As três etapas acima levarão 5 minutos e aqui está o resultado: insira a descrição da imagem aqui

Matell
fonte
3

Aqui está a minha abordagem no QGIS. Era para um conjunto de rotas de ônibus, e eu queria identificar quais estradas apresentavam maior densidade de rotas de ônibus.

  • Usei o plugin Qchainage para converter minhas linhas em pontos. Testei diferentes cenários até produzir muitos pontos por linha (1.500 por linha, e as linhas eram de cerca de 9 km).
  • Aplicou a renderização de simbologia de mapa de calor que o Qgis incorporou na guia estilo. propriedades da camada> estilo> mapa de calor
  • Brinque com o raio e o valor máximo. Certifique-se de selecionar a melhor qualidade de renderização.
  • Criou uma nova rampa de cores (escolha contínua) a partir do preto e de qualquer outra cor brilhante do outro lado.

E voilà.

insira a descrição da imagem aqui insira a descrição da imagem aqui

Diego canales
fonte
2

Percebo que este é um post bastante antigo, no entanto, me deparei com ele fazendo pesquisas semelhantes. Eu desenvolvi um modelo / fluxo de trabalho bastante simples que pode realizar exatamente isso no ArcGIS (possivelmente QGIS, mas ainda não o implementei).

Se você tiver um arquivo GPX ou TCX especificamente (qualquer arquivo de ponto funciona), ele pode ser simplesmente aberto no Excel, depois convertido em um CSV e levado ao ArcGIS. Usando a Points to Lineferramenta, você converte os pontos GPS do CSV em trajetórias, classificando os pontos por tempo (você também pode agrupá-los usando um identificador exclusivo, que nesse caso pode ser o resort, a rota ou a data específica do evento - por exemplo, Dia1, 2, etc). Isso criará uma única camada de polilinha (a menos que você as agrupe pelo ID exclusivo). Você então usa a Split Line at Verticesferramenta que cria segmentos de linha entre cada ponto sucessivo. A partir daí, você usa a Line Densityferramenta que conta o número de linhas que passam por uma célula, dado um tamanho de célula e um raio de pesquisa especificados, e produz uma varredura. Essa varredura pode ser simbolizada como um mapa de calor.

Eu tenho e continuo implementando isso com frequência e incluí um exemplo de resultado abaixo:

insira a descrição da imagem aqui

andrew-ryan
fonte
Parece uma técnica realmente interessante. Eu nunca completei essa idéia, então investigarei mais a fundo. Obrigado por responder a uma pergunta antiga!
21818 RyanDalton
Sem problemas! É um modelo bastante simples, usando apenas essas três ferramentas da Arc Toolbox. Alternativamente, você pode simplificá-lo ainda mais para duas ferramentas usando apenas os Track Intervals to Linee as Line Densityferramentas
andrew-ryan
1

Nosso uso disso envolve encaminhar os alunos para a escola usando o PGRouting.

Os resultados de uma rota individual são, em sua essência, um conjunto de nós (que são transformados em linhas ao unir opcionalmente as arestas relacionadas).

Se você encaminhar vários alunos para uma única escola, a coleção de nós de saída pode ser exibida no QGIS usando o processador de mapa de calor, que mostra os 'pontos ativos' das rotas coletadas para a escola (veja abaixo).

Esses mapas foram usados ​​para informar áreas que deveriam ser direcionadas para uma infraestrutura de segurança adicional, como travessias, sinais, sinais etc.

insira a descrição da imagem aqui

DPSSpatial
fonte
Obrigado por compartilhar a imagem, eu gosto. Vou tentar processar os vértices GPX em vez das linhas para ver se os pontos ativos funcionam dentro de um pequeno
RyanDalton
0

Crie uma grade de grade, converta gpsdata em shapefiles, poligonize as linhas, extraia dados de pontos x, y de tabelas, faça uma densidade de superfície ou faça um mapa de calor usando a prática padrão neste momento. Em seguida, você pode mesclar com dados vetoriais lineares para obter valores de pixel em uma exibição raster ou para processamento numérico adicional.

Lewis
fonte
0

A maioria das pessoas (inclusive eu) olha para um arquivo GPX e o considera uma sequência de posições (pontos), enquanto pode ser perfeitamente visto como uma sequência de segmentos de linha .

Sua formulação de problemas envolve um "mapa de calor" para que você possa inspecionar visualmente suas trajetórias, para que haja uma maneira bastante simples de ignorar a parte complexa de processamento de números, delegando-a diretamente a um mecanismo de plotagem.

Quando você diz "amortecer as linhas", isso seria a espessura da linha. Quando você diz "colecione os passes", isso significaria plotar repetidamente com linhas transparentes , "construindo" cada vez mais cores.

Portanto, sugiro que você plote cada trajetória como uma única polilinha com espessura suficiente para que haja sobreposição (depende do zoom, então você deve definir a espessura na distância do mapa em vez de pixels) e com uma opacidade bastante baixa digamos 0,05, em preto.

É importante não plotar cada segmento, porque, se você fizer isso, suas extremidades se sobreporão, dobrando sua opacidade e criando um "ponto" de cor mais forte.

No final, você obterá uma imagem em escala de cinza na qual poderá aplicar o mapa de cores de sua escolha.

Eu provavelmente faria isso usando Python / Cairo, mas Python / Matplotlib faria, e Html / Canvas ou Html / SVG (ou SVG programático) certamente o fariam.

O resultado final dependeria apenas da resolução da mídia de saída.

heltonbiker
fonte
0

Estou ciente de que essa é uma pergunta bastante antiga, mas como esta postagem é um dos principais resultados de pesquisa deste tópico, pensei em publicar um link para um fluxo de trabalho para a produção de mapas de calor de polilinha no ArcGIS que responde a essa pergunta, como atualmente não há solução para o ArcGIS neste post.

https://luke-webber.github.io/polyline-heatmap/

bendycat_bumbersplat
fonte