Những gì tôi đang cố gắng làm: lặp qua một shapefile điểm và chọn từng điểm rơi vào một đa giác.
Đoạn mã sau được lấy cảm hứng từ một ví dụ truy vấn không gian mà tôi tìm thấy trong một cuốn sách:
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
Điều này hoạt động, và nó chọn bộ dữ liệu, nhưng vấn đề là nó chọn bằng hộp giới hạn , do đó rõ ràng trả về các điểm tôi không quan tâm:
Làm thế nào tôi có thể đi về chỉ trả lại điểm trong đa giác mà không sử dụng qgis: selectbylocation ?
Tôi đã thử sử dụng các phương thức bên trong () và giao nhau () , nhưng vì tôi không làm cho chúng hoạt động, tôi đã sử dụng mã ở trên. Nhưng có lẽ chúng là chìa khóa sau tất cả.