Crie linha "média" a partir de várias linhas usando o QGIS

12

Eu tenho vários recursos de linhas (também em multipontos ...) representando caminho semelhante (trilhas de montanha, neste caso) com várias precisão de GPS, resultando em muitas linhas próximas umas das outras, mas não perfeitamente sobrepostas.

Para os fins deste projeto, estou procurando uma maneira de calcular uma linha "média" de todas elas e gerar uma linha resultante da posição mais provável da trilha.

Como você procederia, usando o QGIS ou qualquer outra ferramenta (pensei em OGR ...)?

insira a descrição da imagem aqui

Horizen
fonte
Dê uma olhada nas faixas Average no wiki do OpenStreetMap, que descreve um método usando R.
Jake
2
Isso soa semelhante a "confusão" e, neste site, existem alguns tópicos: gis.stackexchange.com/search?q=conflation alguma das perguntas e respostas lá o aproximam?
SaultDon
Vou dar uma olhada na "conflação" hoje, mas até agora, as "faixas médias" propostas anteriormente parecem fazer o truque. Estou simplesmente procurando um pouco mais para ver se isso pode ser feito diretamente pelo QGIS, mas as duas respostas são ótimas, obrigado!
Horizen 28/11
Você pode olhar para este tópico e seus links: gis.stackexchange.com/questions/70623/…
johns

Respostas:

9

Dados de teste:

  • QGIS 2.18.16, GRASS GIS 7
  • 4 trilhas de GPS
  • dentro de uma grade de 1x1km

EU.)

Crie pontos ao longo de suas trilhas GPS com o QGIS Plugin Locate Points Along Lines( https://plugins.qgis.org/plugins/LocatePoints/ ). Eu usei um intervalo de 5m no meu exemplo.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

II.)

Crie um Concave Hullcom Processing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull. Eu usei um limite de 0.1no meu exemplo. Se o limite for baixo, pode haver orifícios no polígono de saída.

insira a descrição da imagem aqui

III.)

Agora, você pode calcular a linha "média" com a ajuda do algoritmo do esqueleto. Procure por esqueleto no Processing Toolbox. Use a v.voronoi.skeletonferramenta do GRASS GIS 7 commands.

insira a descrição da imagem aqui

Stefan
fonte
7

A abordagem do mapa de calor:

A abordagem consome mais tempo, devido ao tempo de cálculo das etapas de processamento. Poderia ser visto como uma idéia talvez para se aproximar de uma solução mais geral.

Dados de teste:

  • QGIS 2.18.16, GRASS GIS 7
  • 4 trilhas de GPS
  • dentro de uma grade de 1x1km

EU.)

Crie pontos ao longo de suas trilhas GPS com o plug-in QGIS Localize pontos ao longo das linhas ( https://plugins.qgis.org/plugins/LocatePoints/ ). Para a abordagem do mapa de calor, usei um intervalo de 2m .

II.)

Crie um mapa de calor com o plug-in de mapa de calor QGIS. Eu usei um raio de 40m. Eu aumento o raio até que não haja furos na varredura de saída. Você deve tentar isso com diferentes valores de raio.

insira a descrição da imagem aqui

III.)

EDITADO Não é necessário manter o valor exato da varredura do mapa de calor.

Agora eu quero afinar a varredura para as áreas "brancas", onde mais pontos estão concentrados. Portanto, recalculo a varredura de saída. Os valores mínimo / máximo da varredura de saída são 0e 89.7935. Eu só uso os valores acima 44. Para isso, usei uma "regra de ouro". Arredonde o valor máximo e divida-o por dois. Arredonde esse valor outra vez. 89/2 = 44,5-> 44. Eu usei o Shell OSGeo4W: gdal_calc -A heatmap.tif --calc="A>=44" --NoDataValue=0 --outfile=heatmap_44_NoData.tif.

insira a descrição da imagem aqui

IV.)

EDITADO

a) Poligonize o mapa de calor recalculado com Raster > Conversion > Polygonize ...

b) Simplifique o polígono Vector > Geometry Tools > Simplify geometries. Eu usei uma tolerância de 2. Um polígono mais simples reduz o tempo de processamento dos esqueletos.

c) Calcular esqueletos: procure esqueletos na caixa de ferramentas de processamento. Use a v.voronoi.skeletonferramenta dos comandos do GRASS GIS 7.

insira a descrição da imagem aqui

Você pode ver que a linha resultante representa mais a posição mais provável da trilha do que na minha primeira resposta. Especialmente para a curva no norte, a linha média segue as três faixas mais próximas uma da outra. O mesmo para a curva no leste.

Vantagens da abordagem:

  • bons resultados razoáveis ​​usando exclusivamente QGIS

Desvantagens:

  • tempo de processamento para grandes conjuntos de dados
  • você deve tentar os parâmetros a priori (raio do mapa de calor, valores mínimo / máximo)
  • difícil de automatizar as etapas de processamento
  • não testado para curvas / curvas estreitas e para faixas que realmente saem da linha

Se alguém puder otimizar as etapas de processamento, seja bem-vindo!

Stefan
fonte
+1. Essa é uma abordagem eficaz para encontrar uma "linha média". No entanto, não é necessariamente a melhor estimativa da linha correta . Para ver por que não, imagine que a maioria dos caminhos foi percorrida muito rapidamente, mas uma foi percorrida com extrema lentidão e lentidão o suficiente para que a média dos erros em qualquer local fosse alcançada. Esse caminho único forneceria a representação mais confiável da verdade, mas, ao reamostrar cada caminho, essas informações seriam perdidas e calculadas com as muitas representações mais pobres. Obviamente, esse é um caso extremo, mas, na realidade, alguns caminhos podem ser melhores que outros.
whuber
Compreendo. Obrigado pela sua resposta. O plug-in Heat Map no QGIS fornece algumas opções avançadas, onde você pode use weight from field. Informações como velocidade (deslocamento lento / rápido) ou outras podem ser usadas para ponderar os dados de alguma maneira? A ponderação pode ser usada para melhorar o mapa de calor.
Stefan
Sim, você poderia fazer isso - mas nenhuma dessas técnicas aborda a preocupação de que os dados possam ter uma autocorrelação (forte positiva). Lidar com isso exigiria algo como uma análise de séries temporais dos caminhos individuais.
whuber