También puede hacerlo en la calculadora de campos con el plugin refFunctions. Puedes utilizar la Calculadora de Campos para actualizar la geometría de una capa así como los campos. refFunctions te da una función "geomdistance" para encontrar la línea más cercana dentro de una distancia dada (o "geomnearest" si no quieres un umbral) y devolverá un atributo o la geometría, y la función "closest_point" encontrará el punto más cercano en una geometría dada. Encadénalos así para calcular nuevas geometrías para tu capa de puntos:
closest_point(geom_from_wkt(geomdistance('snap_lines','$geometry',10)) , $geometry)
En lugar de actualizar directamente la geometría, puede calcular un campo con la geometría ajustada. Yo almaceno múltiples geometrías para ajustar puntos de alcantarilla a diferentes capas de arroyos y puedo actualizar fácilmente la geometría del punto en la Calculadora de campos dependiendo de las líneas de arroyos que necesite utilizar.
Hay algunas limitaciones con esto, ambas capas necesitan ser el mismo CRS y la función geomdistance le dará un error si usted tiene más de 100.000 puntos, pero se puede cambiar este límite si se edita refFunctions archivo plugin.
0 votos
Así que el punto tiene que estar a 0 unidades de mapa lateralmente de la línea, pero ¿te importa dónde termina el punto longitudinalmente de la línea con respecto a la ubicación original del punto?
0 votos
Lo ideal sería mover los puntos utilizando una trayectoria perpendicular a la línea. Sin embargo, la intención es utilizar tolerancias bastante pequeñas. Si los puntos se mueven longitudinalmente o latitudinalmente, hacia la línea, no se desplazarán mucho de una posición perpendicular preferible.
0 votos
No estoy seguro de que esta sea la mejor manera, pero una forma que se me ocurre es escribir algo de código python para analizar los dos conjuntos de datos y producir algunas coordenadas de puntos. Si esto es lo que crees que quieres, házmelo saber y podré darte una respuesta. Por ejemplo, para cada punto, si el valor absoluto de la distancia lat de la línea <= 5 unidades, entonces la distancia lateral = 0. Tendrías que importar una biblioteca gdal para convertir los valores x,y en coords. Ver comentarios en: gis.stackexchange.com/questions/185445/
0 votos
Con PyQGIS, se puede producir una capa de memoria donde los puntos se ajustan de acuerdo a la tolerancia previamente considerada de 5 unidades de mapa y una trayectoria perpendicular a la línea. Ver mi respuesta.