Luego de investigar con especialistas en este tema, programadores de deferentes ramas y maestros dimos con la solución al dilema y la plasmamos en este post.
Solución:
Como alternativa, podrías:
-
Utilizar el Convertir Líneas a Puntos herramienta de:
Caja de herramientas de procesamiento > SAGA > Formas – Puntos > Convertir líneas en puntos
(Agregue puntos en distancias pequeñas. Por ejemplo, agregue un punto cada 1 m si la línea total es de 100 m)
-
Utilizar el Distancia al centro más cercano de:
Caja de herramientas de procesamiento > Geoalgoritmos de QGIS > Herramientas de análisis vectorial > Distancia al centro más cercano
(Establecer los parámetros, utilizando la capa de salida de la Convertir Líneas a Puntos herramienta como la Capa de centros de destino y estableciendo el Tipo de forma de salida como Línea a concentrador)
-
El resultado final debe ser una capa de línea que conecte la capa de puntos original con la capa de línea original (con puntos convertidos en línea):
(sin puntos convertidos en línea):
Usé QGIS 2.12.3-Lyon.
En QGIS puedo sugerir usar un “Capa virtual” mediante Layer > Add Layer > Add/Edit Virtual Layer...
.
Supongamos que tenemos dos capas. 'points'
y 'river'
con su correspondiente attribute tablas, vea la imagen de abajo.
Con la siguiente consulta, es posible crear nuevas líneas que representarán la conexión entre puntos a las características de línea más cercanas.
SELECT ST_ShortestLine(r.geometry, p.geometry),
p.id AS pid,
r.id AS rid,
ROUND(ST_Length(ST_ShortestLine(r.geometry, p.geometry)), 6) AS distance
FROM points AS p, river AS r
WHERE distance < 0.5
GROUP BY p.id
ORDER BY MIN(distance)
Nota:
WHERE distance < 0.5
especifica la distancia más larga aceptable entre el punto y la entidad de línea
La capa virtual de salida con su tabla de atributos tendrá el siguiente aspecto
El ClosestPoint hace lo que está buscando, actualmente limitado solo a funciones seleccionadas. Puedes echar un vistazo al código y modificarlo según tus necesidades.
Si entiendes que te ha sido útil nuestro artículo, nos gustaría que lo compartas con más seniors así contrubuyes a extender este contenido.