Cálculo de la distancia más corta de punto a línea usando QGIS?

12

¿Cuál es el mejor método para calcular la distancia desde la carretera más cercana para una serie de puntos de dirección en QGIS, con un conjunto de datos muy grande? (QGIS 2.0.1, Win XP)

Leí las respuestas a preguntas similares anteriores:

Medición de la distancia entre líneas y puntos en QGIS

¿Dibujando líneas perpendiculares en PyQGIS?

Cálculo de la distancia mínima entre puntos y polígonos en QGIS?

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

Sin embargo:

  1. El complemento MMQGIS encuentra la distancia al nodo más cercano de una red de línea, no la distancia más corta (perpendicular) a una línea.

  2. Las secuencias de comandos propuestas por R y Python funcionan correctamente para conjuntos de datos pequeños y pueden implementarse en el modelador, sin embargo, para mi trabajo tengo 530 puntos y una capa de calle regional con aproximadamente 135'000 características, y recorro todas las características y luego tomo la distancia más corta para todos los puntos tomarán una cantidad enorme de tiempo

  3. Tengo problemas para hacer que GRASS funcione en QGIS 2.0.1 ( GRASS en QGIS no funciona (Windows XP) ).

mic_cord
fuente
1
Logré calcular la distancia mínima en QGIS 1.8.0 a través del complemento GRASS y la herramienta v.distance . Se tarda unos 15 minutos en ejecutarse (más el tiempo empleado para configurar correctamente GRASS e importar capas ...). ¿Por qué ArcGIS (es, unirse por ubicación espacial) sigue siendo tan rápido en comparación?
mic_cord
1
Se trata de tener un índice espacial y un código optimizado para la tarea. Acabo de consultar con nuestra biblioteca de enrutamiento (RW Net 4) y puede hacer 2000 cálculos por segundo para una red de aplicaciones de la calle. del mismo tamaño que el tuyo. Haciéndolo aproximadamente 4000 veces más rápido que su complemento GRASS.
Uffe Kousgaard
3
Postgis debería hacerlo rápido
Nicklas Avén
1
@mic_cord ¿Puede dar una explicación detallada de su plugin GRASS v.distance method? He conseguido con éxito v.distance para trabajar usando GRASS fuera de QGIS, pero no puedo hacerlo funcionar dentro de la caja de herramientas Procesamiento (QGIS 2.6).
user25976

Respuestas:

6

Estábamos resolviendo un problema similar. La mejor y más rápida forma para nosotros es:

  1. Rasterizar capa de línea (Ráster / Conversión / Rasterizar ...)
  2. Convertir a proximidad (Ráster / Análisis / Proximidad ...)
  3. Use la herramienta de muestreo de puntos del complemento para obtener valores para todos sus puntos del ráster
Miró
fuente
5

Algunas de las respuestas a Medir la distancia entre líneas y puntos en QGIS recomiendan el complemento NNJoin QGIS ( http://arken.nmbu.no/~havatv/gis/qgisplugins/NNJoin/ ). Hará una unión espacial vecina más cercana e incluirá la distancia en el resultado. El complemento NNJoin utiliza un índice espacial, por lo que debe manejar conjuntos de datos razonablemente grandes.

Håvard Tveite
fuente
Tveite, secundo tu sugerencia. Me sorprendió mucho que este complemento funcionara más rápido que un paquete recomendado en R (es decir, geosphere :: dist2Line).
Johanness