Me gustaría alinear múltiples puntos a una línea, o líneas dentro de una capa, usando una tolerancia específica o un búfer alrededor de los objetos de línea. Consulte el boceto de muestra adjunto.
Por el bien de este ejemplo, los puntos más cercanos a la línea en la imagen ANTES están dentro de 5 unidades de mapa de la línea, mientras que los puntos más exteriores están a más de 10 unidades de mapa de distancia. Me gustaría ajustar los puntos más cercanos a la línea más cercana, usando una tolerancia de 5 unidades de mapa para lograr el resultado en la imagen DESPUÉS.
Respuestas:
Hay una herramienta incorporada para hacer esto en la versión QGIS 3.0 (inédita). Puede obtener una instantánea nocturna del sitio web de QGIS para probar esto por adelantado.
Para hacer esto:
Aquí está el resultado, que muestra los puntos originales como "x", y los puntos ajustados como puntos verdes. He usado una tolerancia aquí para que solo algunos de los puntos de entrada estén ajustados.
fuente
Esto se puede lograr con PyQGIS . Para la próxima situación:
El siguiente código, considerando una tolerancia de 5 unidades de mapa, se ejecutó en la Consola Python de QGIS:
Se produjo una capa de memoria donde los puntos se ajustaban de acuerdo con la tolerancia previamente considerada de 5 unidades de mapa y una ruta perpendicular a la línea.
fuente
También puede hacer esto en la Calculadora de campo con el complemento refFunctions. Puede usar la Calculadora de campo para actualizar la geometría de una capa y los campos. refFunctions le brinda una función de "geomdistance" para encontrar la línea más cercana dentro de una distancia dada (o "geomnearest" si no desea un umbral) y devolverá un atributo o la geometría, y la función "punto_más cercano" encontrará la más cercana punto en una geometría dada. Colóquelos juntos para calcular nuevas geometrías para su 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. Almaceno múltiples geometrías para ajustar puntos de alcantarilla a diferentes capas de flujo y puedo actualizar fácilmente la geometría del punto en la Calculadora de campo, según las líneas de flujo que necesite usar.
Hay algunas limitaciones con esto, ambas capas deben ser el mismo CRS y la función geomdistance le dará un error si tiene más de 100,000 puntos, pero puede cambiar este límite si edita el archivo de complemento refFunctions.
fuente