मैं क्या करने की कोशिश कर रहा हूँ: एक बिंदु आकृति के माध्यम से लूप और प्रत्येक बिंदु का चयन करें जो एक बहुभुज में आता है ।
निम्नलिखित कोड एक स्थानिक क्वेरी उदाहरण से प्रेरित है जो मुझे एक पुस्तक में मिला:
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
यह काम करता है, और यह डेटासेट का चयन करता है, लेकिन समस्या यह है कि यह बाउंडिंग बॉक्स द्वारा चयन करता है , इसलिए स्पष्ट रूप से रिटर्निंग पॉइंट्स में मुझे दिलचस्पी है:
मैं बहुभुज के भीतर केवल वापसी बिंदुओं के बारे में कैसे जा सकता हूं बिना किगिस का उपयोग किए: सेलेब्रलोकेशन ?
मैंने भीतर () और चौराहों () विधियों का उपयोग करने की कोशिश की है , लेकिन जैसा कि मुझे उन्हें काम करने के लिए नहीं मिल रहा था, मैंने ऊपर दिए गए कोड का सहारा लिया। लेकिन शायद वे सब के बाद महत्वपूर्ण हैं।