Se necesitan objetos para QgsGeometry clase. En mi ejemplo (capa de polígonos con una sola característica):
el siguiente código obtiene la lista de puntos de la capa de polígonos:
layer = iface.activeLayer()
feature = layer.getFeatures().next()
polygon = feature.geometry().asPolygon()
n = len(polygon[0])
for i in range(n):
print polygon[0][i]
Después de ejecutar el código en la consola de Python de QGIS, obtuve cada punto del polígono como una tupla:
(384465,4.45043e+06)
(392424,4.46131e+06)
(409514,4.45616e+06)
(411269,4.44282e+06)
(404480,4.43076e+06)
(392541,4.43486e+06)
(381773,4.44118e+06)
(384465,4.45043e+06)
Observa que el primer y el último punto coinciden.
Nota de edición:
He editado mi respuesta basándome en tu comentario. El siguiente código utiliza QgsVectorLayer constructor de la clase.
import os
my_path = '/home/zeito/pyqgis_data/polygon8.shp' #this is a Linux path
root,name = os.path.split(my_path)
name = name[:-4]
layer = QgsVectorLayer(my_path,
name,
'ogr') #This is my provider: in your code is memory
QgsMapLayerRegistry.instance().addMapLayer(layer)
feature = layer.getFeatures().next()
polygon = feature.geometry().asPolygon()
n = len(polygon[0])
for i in range(n):
print polygon[0][i]
0 votos
¿Qué problemas tienes con el código que tienes en tu pregunta?
0 votos
No es un problema, es una pregunta sobre cómo obtener los puntos del polígono.