Antes de tudo, quero dizer que sei que um problema semelhante foi levantado antes, mas não forneceu uma solução satisfatória.
Preciso obter o número de vértices de cada objeto na camada de linha do vetor. Baseando-se neste artigo: https://joseguerreroa.wordpress.com/2014/07/28/contar-y-extraer-nodos-vertices-para-vectoriales-de-linea-o-poligono-mediante-pyqgis/
Eu fiz este código:
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
E, como resultado, recebo um número de vértices, mas apenas o último objeto. Acho que estou perdendo um loop while na camada (para obter um número para cada objeto), estou certo? Mas não sei como deve ficar.
Eu sei que existe o plugin 'Contador de vértices', mas ele não funciona (nem inicia) no meu caso (QGIS 2.12, Win 8.1) .E eu preciso que seja feito em Python.
A propósito, vocês não acham pessoal, que é ridiculamente difícil obter o número de vértices enquanto é tão fácil obter as coordenadas de cada vértice?
EDIT: @nwduncan (@ArMoraer também) sugeriu a correção de um recuo, e foi uma boa pista. Percebi que o console Python precisa de atualização, porque às vezes não consegue lidar com recuos. Espero que ajude outros iniciantes. O código final é:
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)
é um ponto válido em algumas projeções.