Quiero usar QGIS creando puntos a lo largo de la línea, pero a una distancia especificada. Encontré dos herramientas de GRASS en SEXTANTE Toolbox :
- v.to.points
- v.segmento
Intenté v.to.points , estableciendo la distancia máxima entre puntos en unidades de mapa a 100 y obtuve esto:
La segunda foto mostró una mirada cercana desde la superior. El resultado fue lo que quería, pero quiero obtener menos puntos , pero incluso establecí la distancia máxima a 1000, o 1000000, el resultado fue el mismo.
Traté de usar v.segment , pero no tenía ningún archivo que contenga reglas de segmento.
Underdark me dio algunos consejos, y probé geometrías de densificación dado un intervalo . Primero me dio un archivo de forma de polilínea igual que ingresé, y luego usé nodos de extracción para tratar de obtener esos puntos. Pero el resultado fue el mismo que obtuve usando v.to.points , sin importar lo que establezca el intervalo de distancia.
¿Cómo puedo crear puntos a lo largo de la línea y en una distancia especificada?
fuente
Respuestas:
En la consola de Python:
puede usar el módulo Shapely (como en ¿Cómo crear puntos equidistantes en QGIS? ) con la función
punto = línea.interpolar (distancia actual)
La nueva API de Python de la versión maestra (1.9) tiene un comando equivalente (como en Generación de nodos de PK (distancia) en QGIS de Nathan Woodrow)
punto = geom.interpolate (currentdistance)
o puede usar álgebra vectorial y cosenos de dirección (como en PyQGIS: geometrías, vectores, álgebra vectorial o cosenos de dirección, ejemplos de aplicación , en francés)
1) crear una clase de capa de memoria (clase completa (sin atributos) en crea_mem_layer.py )
2) funciones de álgebra vectorial (de algèbre_vect_PyQGIS.py )
3) cosenos de dirección
4) línea de proceso o segmentos de línea
Resultados
polilínea, punto equidistante con Shapely o PyQGIS2, con cosenos de dirección
Luego solo ajusta el intervalo
fuente
Ahora hay un complemento llamado QChainage que hace exactamente lo que quieres. Usted especifica una distancia de intervalo y el complemento crea puntos a lo largo de su línea en el intervalo especificado.
fuente
He escrito un guión que cambia la herramienta de geometrías Sextante Densify para aceptar una cierta distancia. Se llama geometrías densificadas dado un intervalo .
Después de ejecutar Densify, puede extraer los puntos con la herramienta Extraer nodos .
Puede obtenerlo de Github e instalar las instrucciones en mi blog .
fuente
Si no desea andar con scripts de Python, simplemente puede instalar y usar el complemento "Perfil de línea" e ignorar / eliminar la columna de valor ráster. El PK será lo que establezca el intervalo de muestreo.
fuente
Bueno, no estoy seguro si esto está en la versión estable, pero en la caja de herramientas sextante en 1.9 alfa en Geoalgorithims-> Vector es la opción "Convertir líneas en puntos". Funciona de maravilla, sé genial si también agregó un campo para la distancia a lo largo de la línea.
Sin embargo, fue interesante agregar el campo NOMBRE de mi capa vectorial.
Intenté hacer que Python Script de Nathan Woodrow funcionara, pero apestaba con Python. Y con el código en general parece.
fuente
Pasé mucho tiempo luchando con este problema, pero finalmente obtuve más o menos lo que estaba buscando usando QChainage. Lo que me gustaría compartir es algo que puede ayudar a otros. Cuando se utiliza la herramienta de disolución de geoprocesamiento SAGA en la línea, QChainage produce resultados incorrectos. El uso de una herramienta de disolución diferente hace que funcione bien.
fuente