Ce que je suis en train de le faire: la boucle par un point shapefile et sélectionnez chaque point qui tombe dans un polygone.
Le code suivant est inspiré d'un exemple de requête spatiale que j'ai trouvé dans un livre:
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
Cela fonctionne, et il sélectionne des jeux de données, mais le problème est qu'il sélectionne par boîte englobante , donc renvoyant évidemment des points qui ne m'intéressent pas:
Comment pourrais-je ne retourner que des points dans le polygone sans utiliser qgis: selectbylocation ?
J'ai essayé d'utiliser les méthodes within () et intersects () , mais comme je ne les faisais pas fonctionner, j'ai eu recours au code ci-dessus. Mais peut-être qu'ils sont la clé après tout.