Processing math: 100%

53 votos

¿Cómo puedo cambiar la dirección de la línea en QGIS?

Algo que, con suerte, es bastante fácil.

Me gustaría poder cambiar la dirección de una polilínea/línea en el QGIS. Hice una herramienta personalizada para hacer esto en MapInfo hace un par de años, sin embargo parece que no puedo encontrar nada para QGIS.

¿Alguien sabe de alguna herramienta para hacer esto?

Si uno no existe, entonces estoy feliz de intentar hacerlo, sólo que no quería hacerlo si ya se había hecho uno.

4 votos

Sería estupendo tenerlo. No conozco ninguna función nativa de QGIS de este tipo.

4 votos

Tengo una buena idea de cómo puedo hacer esto con bastante facilidad, voy a ver si puedo azotar algo esta noche.

1 votos

Genial. Quizás se pueda añadir a la caja de herramientas ftools/vector.

4voto

Krishna Puntos 2422

Este plugin cambiará la dirección de una polilínea.

http://plugins.qgis.org/plugins/DigitizingTools/

0voto

Noam D. Elkies Puntos 17729

(Utilizando QGIS 3.10)

Siguiendo la respuesta de @Nathan W, he aquí una solución si su línea es una LineStringZ (es decir, una línea con un valor x, y y Z) - como lo son la mayoría de los archivos KML de Google Earth (incluso si ese valor Z = 0, lo que suele ser el caso).

Es posible que se produzca este error cuando se realice la llamada a nodes.reverse en el código siguiente:

TypeError: el índice 0 tiene el tipo 'QgsPointXY' pero se espera 'QgsPoint'

1   layer = qgis.utils.iface.mapCanvas().currentLayer()
2   for feature in layer.selectedFeatures():
3      geom = feature.geometry()
4      nodes = geom.asPolyline()
5      nodes.reverse() 
6      newgeom = QgsGeometry.fromPolyline(nodes)
7       layer.changeGeometry(feature.id(),newgeom)

La solución es utilizar QgsGeometry.fromPolylineXY() en su lugar en la línea 6:

1 vLayer = qgis.utils.iface.mapCanvas().currentLayer()
2 for feat in vLayer.selectedFeatures():
3     geom = feat.geometry()
4     pointXY_nodes = geom.asPolyline() # >>> returns list of QgsPointXY objects: [<QgsPointXY: POINT(-117.60560599 ..
5     pointXY_nodes.reverse() 
6     newgeom = QgsGeometry.fromPolylineXY(pointXY_nodes)
7     vLayer.changeGeometry(feat.id(),newgeom)
8     print("Geom reversed!")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X