Tout d'abord, je tiens à dire que je sais qu'une question similaire a été soulevée auparavant, mais qu'elle n'a pas fourni de solution satisfaisante.
J'ai besoin d'obtenir le nombre de sommets de chaque objet sur le calque de ligne vectorielle. Sur la base de cet article: https://joseguerreroa.wordpress.com/2014/07/28/contar-y-extraer-nodos-vertices-para-vectoriales-de-linea-o-poligono-mediante-pyqgis/
J'ai fait ce code:
layer = qgis.utils.iface.activeLayer()
feat = layer.getFeatures()
for feature in feat:
geom = feature.geometry()
n = 1
ver = geom.vertexAt(0)
points=[]
while(ver != QgsPoint(0,0)):
n +=1
points.append(ver)
ver = geom.vertexAt(n)
print n
Et comme résultat, j'obtiens un certain nombre de sommets, mais seulement du dernier objet. Je suppose qu'il me manque une boucle while sur le calque (pour obtenir le numéro de chaque objet), ai-je raison? Mais je ne sais pas à quoi ça devrait ressembler.
Je sais qu'il existe un plugin 'Vertices counter', mais cela ne fonctionne pas (ne démarre même pas) dans mon cas (QGIS 2.12, Win 8.1). Et j'ai besoin que ce soit fait en Python.
Au fait, ne pensez-vous pas, les gars, qu'il est ridiculement difficile d'obtenir le nombre de sommets alors qu'il est si facile d'obtenir les coordonnées de chaque sommet?
EDIT: @nwduncan (@ArMoraer aussi) a suggéré de corriger une indentation, et c'était un bon indice. J'ai remarqué que la console Python a besoin d'être rafraîchie, car parfois elle ne peut pas gérer les indentations. J'espère que cela aidera d'autres débutants. Le code final est:
layer = qgis.utils.iface.activeLayer()
feat = layer.getFeatures()
for feature in feat:
geom = feature.geometry()
n = 1
ver = geom.vertexAt(0)
points=[]
while(ver != QgsPoint(0,0)):
n +=1
points.append(ver)
ver=geom.vertexAt(n)
print n
QgsPoint(0,0)
un point valable dans certaines projections.