(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!")
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.
2 votos
Dado que ya tienes el núcleo resuelto, ¿hay alguna posibilidad de que quieras abordar esta cuestión, pero para QGIS? gis.stackexchange.com/questions/9286/ resources.arcgis.com/content/kbase?fa=articleShow&d=20961
2 votos
Aquí está el billete: hub.qgis.org/issues/4936