Unir atributos de capa de punto y línea por ubicación (distancia más cercana) en QGIS

13

Mi problema es el siguiente: tengo una línea shp (capa de destino) y un punto shp (capa de unión). la segunda (capa de puntos) contiene un atributo que quiero unir con una capa de línea basada en la distancia más cercana a la línea. Los puntos y las líneas no se cruzan.

Puedo hacer esto con ArcGIS y la unión espacial (opción de coincidencia: más cercana), pero no sé cómo puedo lograr esto en QGIS.

Miha Požauko
fuente
3
Hay una herramienta para hacer Unirse por ubicación pero no tiene una opción "más cercana". No sé si hay alguna solución. En general, evalúe para apoyar el desarrollo de sus opciones / herramientas favoritas que faltan, también es de esta manera que los usuarios pueden ayudar a que este software crezca.
Giovanni Manghi

Respuestas:

8

No creo que haya una función QGIS 'central' para esto. Sin embargo, instale el complemento MMQGIS y use la herramienta 'distancia de concentrador'. Elija sus puntos como la capa "Puntos de origen" y sus líneas como la "Capa de concentradores de destino" y establezca "Tipo de forma de salida" en "Línea a concentrador". Esto le dará un archivo de formas de líneas (con longitud) que unen las características más cercanas. Convenientemente, también agrega la ID de la característica más cercana a la tabla de atributos.

Editar / Comentar: este enfoque funciona bien si hay menos puntos que líneas, o si hay una situación de línea a punto uno a uno. Tener más puntos que líneas complica las cosas. La herramienta 'Distancia de concentrador' agrega el ID de la entidad de línea a la tabla de atributos de punto como 'Nombre de concentrador' junto con la distancia entre el punto y el centro de la línea como 'HubDist'. Si hay más puntos que líneas, se requiere trabajo adicional para determinar dentro de cada subconjunto de puntos (esos registros múltiples vinculados a cada centro de línea) cuál de ellos es el más cercano a cada línea, y / o cuál es uno con el conjunto deseado de atributos para unir a la línea.

Darren Cope
fuente
esto debe marcarse como la respuesta, sujeto a una edición menor de "líneas" v "puntos"
Willy
1
La "distancia del eje" no es la herramienta correcta si el criterio es "la distancia más cercana a la línea". El código mmqgis revela que la distancia del centro utiliza una aproximación de la geometría del "centro". Los cálculos de distancia (mmqgis_distance) toman dos puntos como parámetros. Aquí está el código que hace la aproximación de la geometría del concentrador en mmqgis_library.py: "feature.geometry (). BoundingBox (). Center ()". Esto significa que se utiliza el centro del cuadro delimitador de la geometría en lugar de la geometría real. Entonces, si el criterio es "distancia más cercana a la línea", GRASS v.distance o el complemento NNJoin son más adecuados.
Håvard Tveite
5

La función GRASS v.distance se puede utilizar para esto. En QGIS puede acceder a la función a través del complemento GRASS (la versión de procesamiento actualmente no funciona). El complemento NNJoin QGIS puede ser una alternativa más simple.

Håvard Tveite
fuente
3

El complemento NNJoin nunca me ha decepcionado y funciona bien con grandes conjuntos de datos .

Complementos> Instalar: NNJoin> NNJoin> elija la capa de entrada y la capa de unión> Luego haga clic en unirse.

Examine los resultados de la nueva capa de salida con la tabla de atributos. Advertencia: asegúrese de que ambas capas estén usando la misma proyección espacial, de lo contrario sus resultados estarán en blanco.

Matthew Bayly
fuente
2

En 2019 esto puede ser posible con la herramienta QGIS 3 Zanzíbar 'Unir atributos por el más cercano'. Esta herramienta le permite encontrar la característica más cercana y unir los atributos seleccionados. También es posible hacer una unión de uno a muchos, si especifica la distancia máxima y los vecinos más cercanos.

mauegraus
fuente