Apa yang saya coba lakukan: loop melalui shapefile titik dan pilih setiap titik yang jatuh ke dalam poligon.
Kode berikut ini terinspirasi oleh contoh kueri spasial yang saya temukan di sebuah buku:
mitte_path = r"D:\PythonTesting\SelectByLocation\mitte.shp"
punkte_path = r"D:\PythonTesting\SelectByLocation\punkte.shp"
polygon = QgsVectorLayer(mitte_path, 'Mitte', 'ogr')
points = QgsVectorLayer(punkte_path, 'Berlin Punkte', 'ogr')
QgsMapLayerRegistry.instance().addMapLayer(polygon)
QgsMapLayerRegistry.instance().addMapLayer(points)
polyFeatures = polygon.getFeatures()
pointsCount = 0
for poly_feat in polyFeatures:
polyGeom = poly_feat.geometry()
pointFeatures = points.getFeatures(QgsFeatureRequest().setFilterRect(polyGeom.boundingBox()))
for point_feat in pointFeatures:
points.select(point_feat.id())
pointsCount += 1
print 'Total:',pointsCount
Ini berfungsi, dan ia memang memilih dataset, tetapi masalahnya adalah ia memilih dengan kotak pembatas , karenanya jelas mengembalikan poin yang tidak saya minati:
Bagaimana saya bisa pergi hanya mengembalikan poin dalam poligon tanpa menggunakan qgis: selectbylocation ?
Saya telah mencoba menggunakan metode inside () dan intersect () , tetapi karena saya tidak membuatnya berfungsi, saya beralih ke kode di atas. Tapi mungkin mereka kuncinya.