Що я намагаюся зробити: проведіть курсор через файл форми і виберіть кожну точку, що потрапляє в полігон.
Наступний код натхненний прикладом просторового запиту, який я знайшов у книзі:
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
Це працює, і він вибирає набори даних, але проблема полягає в тому, що він вибирається за допомогою обмеження поля , отже, очевидно, повертаються точки, мене не цікавлять:
Як я міг обходити лише точки, що повертаються в полігоні, не використовуючи qgis: selectbylocation ?
Я спробував використовувати методи within () та intersects () , але, оскільки я не змушував їх працювати, я вдався до коду вище. Але, можливо, вони є ключовими зрештою.