Quello che sto cercando di fare: ciclo attraverso un punto di shapefile e selezionare ogni punto che cade in un poligono.
Il codice seguente è ispirato a un esempio di query spaziale che ho trovato in un libro:
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
Funziona e seleziona i set di dati, ma il problema è che seleziona i limiti , quindi ovviamente restituendo i punti che non mi interessano:
Come potrei fare solo per restituire punti all'interno del poligono senza usare qgis: selectbylocation ?
Ho provato a usare i metodi Within () e intersects () , ma poiché non li stavo facendo funzionare, ho fatto ricorso al codice sopra. Ma forse sono la chiave dopo tutto.