12 votos

Calculando la distancia de un punto a lo largo de una línea usando QGIS

Tengo una polilínea (ruta de movimiento) y puntos registrados a lo largo de la línea. Me gustaría calcular para cada punto la distancia a lo largo de la línea en QGIS. Espero obtener un resultado que agregue una nueva columna a la tabla de atributos del punto indicando la distancia a lo largo de la cual se encuentra en la línea.

13voto

GriffinHeart Puntos 187

Si desea utilizar el complemento GRASS, hay un módulo v.distance que hace precisamente eso. Primero deberá importar las capas de polilínea y puntos en GRASS utilizando el módulo v.in.ogr en el Cuadro de herramientas GRASS. Luego localice el módulo v.distance. Los vectores De y A son obviamente los puntos y la línea. Luego seleccione "Distancia al punto más cercano ... a lo largo de la característica lineal". También necesitará un nombre de columna de atributo para aceptar los valores de distancia (Use v.db.addcol para agregar ese atributo si aún no lo tiene). Eso debería hacerlo.

0 votos

Muchas gracias Micha. Lo siento, estuve ausente y no pude dar feedback antes. El módulo v.distance es exactamente lo que necesitaba. Muchísimas gracias.

0 votos

Tenga en cuenta que la etiqueta actualmente lee (en QGIS 2.2) "Distancia entre puntos/centroides ... a lo largo de esta entidad lineal"

0 votos

No puedo encontrar esta opción/etiqueta en ningún lugar de QGIS 3.2 ¿Alguien tiene idea si me equivoco o si hay alguna solución alternativa? Hasta ahora, no he podido encontrar nada para resolver este problema en 3.2...

3voto

RomanKapitonov Puntos 114

Otra manera de medir esto es usando Qchainage (complemento de QGis) para producir nodos equidistantes de la línea. Luego, puedes utilizar Distancia al centro más cercano (complemento de QGis) para calcular la distancia entre los puntos.

3voto

matzeri Puntos 176

Puedes usar fieldcalculator con una expresión como:

line_locate_point(overlay_nearest('line',$geometry)[0],$geometry)

Reemplaza 'line' con el nombre de tu capa de línea. overlay_nearest() obtendrá la geometría de la línea más cercana a tu punto. line_locate_point() la distancia en unidades crs a lo largo de esa línea hasta el punto especificado. Por supuesto, también puedes usar esta expresión en la capa de línea, por lo tanto, solo modifícala un poco.

1voto

Anton8000 Puntos 165

Puedes usar una capa virtual y unir cada punto a una línea (utilizo una distancia de 5 m por debajo) y medir la distancia a lo largo de la línea. ST_Line_Locate_Point:

devuelve un número (entre 0.0 y 1.0) que representa la ubicación del punto más cercano en LineString al punto dado, como una fracción del largo total de la línea 2d

así que multiplico por la longitud de la línea. Reemplaza "waypoint" con el nombre de tu capa de puntos y "path" con el nombre de tu capa de líneas. Y añade más campos de la capa de puntos si deseas. Como select pnt.id, pnt.someotherfield, ...

select  pnt.id, pnt.geometry, 
        round(ST_Line_Locate_Point(line.geometry, pnt.geometry)*st_length(line.geometry),1) as distalongline
from "waypoint" pnt
left join "path" line
on PtDistWithin(pnt.geometry, line.geometry, 5)
order by ST_Line_Locate_Point(line.geometry, pnt.geometry)

enter image description here

0voto

mins Puntos 477

El plugin KP Find hace esto con una capa de puntos y otra capa que contiene una entidad lineal. Proyecta un punto en la línea y proporciona la distancia geodésica a lo largo de la línea y la distancia hasta esa línea. Tiene un modo interactivo o puede iterar sobre toda una capa de puntos, añadiendo nuevos campos de atributos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X