まず第一に、以前に同様の問題が提起されたことを知っていますが、それは満足のいく解決策を提供しませんでした。
ベクターラインレイヤー上のすべてのオブジェクトの頂点の数を取得する必要があります。この記事を基に:https : //joseguerreroa.wordpress.com/2014/07/28/contar-y-extraer-nodos-vertices-para-vectoriales-de-linea-o-poligono-mediante-pyqgis/
私はこのコードをしました:
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
その結果、頂点の数を取得しますが、最後のオブジェクトのみを取得します。(すべてのオブジェクトの番号を取得するために)レイヤーでwhileループが1つ欠けていると思いますが、そうですか?しかし、私はそれがどのように見えるべきかわかりません。
'Vertices counter'プラグインがあることは知っていますが、私の場合(QGIS 2.12、Win 8.1)で機能しません(起動しません)。そして、Pythonで実行する必要があります。
ところで、すべての頂点の座標を取得するのは簡単ですが、頂点の数を取得するのは途方もなく難しいと思いませんか。
編集:@nwduncan(@ArMoraerも)はインデントを修正することを提案し、それは良い手がかりでした。Pythonコンソールはインデントを処理できないことがあるため、更新が必要であることに気付きました。それが他の初心者を助けることを願っています。最終的なコードは次のとおりです。
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)
、一部の予測では有効な点です。