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