3
การทำ Spatial Query ในลูปใน PyQGIS
สิ่งที่ฉันพยายามทำ: วนลูปผ่านไฟล์รูปร่างจุดและเลือกแต่ละจุดที่อยู่ในรูปหลายเหลี่ยม โค้ดต่อไปนี้ได้รับแรงบันดาลใจจากตัวอย่างการสืบค้นเชิงพื้นที่ที่ฉันพบในหนังสือ: 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 มันใช้งานได้และมันเลือกชุดข้อมูล แต่ปัญหาก็คือมันเลือกตามขอบกล่องดังนั้นจึงทำให้เห็นได้ชัดว่าฉันไม่สนใจจุดกลับมา: …