Calculando a menor distância do ponto à linha usando o QGIS?

12

Qual é o melhor método para calcular a distância da estrada mais próxima para uma série de pontos de endereço no QGIS, com um conjunto de dados muito grande? (QGIS 2.0.1, Win XP)

Li as respostas para perguntas semelhantes anteriores:

Medindo a distância entre linhas e pontos no QGIS

Desenhando linhas perpendiculares no PyQGIS?

Calculando a distância mínima entre pontos e polígonos no QGIS?

/programming/16448402/distance-of-point-feature-to-nearest-polygon-in-r

Mesmo assim:

  1. O plug-in MMQGIS encontra a distância para o nó mais próximo de uma rede de linhas, não a distância mais curta (perpendicular) a uma linha.

  2. Os scripts propostos por R e Python funcionam corretamente para pequenos conjuntos de dados e podem ser implementados no modelador; no entanto, para o meu trabalho, tenho 530 pontos e uma camada de rua regional com cerca de 135'000 recursos, percorrendo todos os recursos e percorrendo a menor distância para todos os pontos levarão uma quantidade enorme de tempo

  3. Tenho problemas ao fazer o GRASS funcionar no QGIS 2.0.1 (o GRASS no QGIS não funciona (Windows XP) ).

mic_cord
fonte
1
Consegui calcular a distância mínima no QGIS 1.8.0 através do plug-in GRASS e da ferramenta v.distance . Demora cerca de 15 minutos para executar (mais o tempo gasto para definir corretamente o GRASS e importar as camadas ...). Por que o ArcGIS (es, junção por localização espacial) ainda é tão rápido em comparação?
mic_cord
1
É uma questão de ter um índice espacial e código otimizados para a tarefa. Acabei de verificar com a nossa biblioteca de roteamento (RW Net 4) e ele pode fazer 2000 esses cálculos por segundo para uma rede de rua de aplicativos. o mesmo tamanho que o seu. Tornando-o cerca de 4000 vezes mais rápido que o seu plugin GRASS.
Uffe Kousgaard
3
Postgis deve fazê-lo rápido
Nicklas Aven
1
@mic_cord Você pode nos dar uma explicação detalhada do método v.distance do seu plugin GRASS? Consegui com que o v.distance funcionasse com sucesso usando GRASS fora do QGIS, mas não consigo fazê-lo funcionar na caixa de ferramentas de processamento (QGIS 2.6).
user25976

Respostas:

6

Estávamos resolvendo um problema semelhante. A melhor e mais rápida maneira para nós é:

  1. Rasterizar camada de linha (Rasterizar / Conversão / Rasterizar ...)
  2. Converter em proximidade (Raster / Analysis / Proximity ...)
  3. Use a ferramenta de amostragem de pontos do plugin para obter valores para todo o seu ponto da varredura
Miro
fonte
5

Algumas das respostas para Medir a distância entre linhas e pontos no QGIS recomendam o plugin NNJoin QGIS ( http://arken.nmbu.no/~havatv/gis/qgisplugins/NNJoin/ ). Ele fará uma junção espacial do vizinho mais próximo e incluirá a distância no resultado. O plugin NNJoin usa um índice espacial, portanto, ele deve lidar com conjuntos de dados razoavelmente grandes.

Håvard Tveite
fonte
Tveite, eu apóio sua sugestão. Fiquei surpreso que este plugin funcionou mais rápido que um pacote recomendado no R (ou seja, geosphere :: dist2Line).
Johanness