Pertama-tama, saya ingin mengatakan bahwa saya tahu bahwa masalah serupa telah diangkat sebelumnya, tetapi tidak memberikan solusi yang memuaskan.
Saya perlu mendapatkan jumlah simpul dari setiap objek pada layer garis vektor. Mendasarkan pada artikel ini: https://joseguerreroa.wordpress.com/2014/07/28/contar-y-extraer-nodos-vertices-para-vectoriales-de-linea-o-poligono-mediante-pyqgis/
Saya melakukan kode ini:
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
Dan sebagai hasilnya saya mendapatkan jumlah simpul, tetapi hanya dari objek terakhir. Saya kira saya kehilangan satu loop sementara pada layer (untuk mendapatkan nomor untuk setiap objek), apakah saya benar? Tapi saya tidak tahu bagaimana tampilannya.
Saya tahu bahwa ada plugin 'Vertices counter ", tetapi tidak berfungsi (bahkan tidak memulai) dalam kasus saya (QGIS 2.12, Win 8.1). Dan saya perlu melakukannya dengan Python.
Ngomong-ngomong, bukankah menurut kalian, sangat sulit untuk mendapatkan jumlah simpul sementara sangat mudah untuk mendapatkan koordinat dari setiap simpul?
EDIT: @nwduncan (@ArMoraer juga) menyarankan untuk memperbaiki lekukan, dan itu adalah petunjuk yang bagus. Saya perhatikan bahwa konsol Python perlu penyegaran, karena terkadang tidak dapat menangani lekukan. Semoga ini akan membantu pemula lainnya. Kode terakhir adalah:
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)
merupakan poin yang valid dalam beberapa proyeksi.