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 ...)?
Respostas:
Dados de teste:
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.II.)
Crie um
Concave Hull
comProcessing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull
. Eu usei um limite de0.1
no meu exemplo. Se o limite for baixo, pode haver orifícios no polígono de saída.III.)
Agora, você pode calcular a linha "média" com a ajuda do algoritmo do esqueleto. Procure por esqueleto no
Processing Toolbox
. Use av.voronoi.skeleton
ferramenta doGRASS GIS 7 commands
.fonte
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:
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.
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
0
e89.7935
. Eu só uso os valores acima44
. 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
.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 de2
. 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.skeleton
ferramenta dos comandos do GRASS GIS 7.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:
Desvantagens:
Se alguém puder otimizar as etapas de processamento, seja bem-vindo!
fonte
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.