Zunächst möchte ich sagen, dass ich weiß, dass ein ähnliches Problem bereits früher angesprochen wurde, aber keine zufriedenstellende Lösung bot.
Ich muss die Anzahl der Eckpunkte jedes Objekts auf der Vektorlinienebene ermitteln. Basierend auf diesem Artikel: https://joseguerreroa.wordpress.com/2014/07/28/contar-y-extraer-nodos-vertices-para-vectoriales-de-linea-o-poligono-mediante-pyqgis/
Ich habe diesen Code gemacht:
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
Und als Ergebnis erhalte ich die Anzahl der Eckpunkte, aber nur des letzten Objekts. Ich vermisse wohl eine while-Schleife auf der Ebene (um die Nummer für jedes Objekt zu erhalten), habe ich Recht? Aber ich weiß nicht, wie es aussehen soll.
Ich weiß, dass es ein 'Vertices Counter'-Plugin gibt, aber es funktioniert in meinem Fall nicht (startet nicht einmal) (QGIS 2.12, Win 8.1). Und ich muss es in Python machen.
Denken Sie übrigens nicht, dass es lächerlich schwierig ist, die Anzahl der Scheitelpunkte zu ermitteln, während es so einfach ist, die Koordinaten jedes Scheitelpunkts zu ermitteln?
BEARBEITEN: @nwduncan (auch @ArMoraer) schlug vor, eine Einrückung zu korrigieren, und es war ein guter Hinweis. Ich habe festgestellt, dass die Python-Konsole aktualisiert werden muss, da sie manchmal keine Einrückungen verarbeiten kann. Hoffe es wird anderen Anfängern helfen. Der endgültige Code lautet:
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)
ist ein gültiger Punkt in einigen Projektionen.