আমি যা করার চেষ্টা করছি: পয়েন্ট শেফফিলের মধ্য দিয়ে লুপ করুন এবং বহুভুজের মধ্যে পড়ে এমন প্রতিটি পয়েন্ট নির্বাচন করুন ।
নিম্নলিখিত কোডটি একটি বইয়ের মধ্যে পাওয়া একটি স্থানিক প্রশ্নের উদাহরণ দ্বারা অনুপ্রাণিত:
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
এটি কাজ করে, এবং এটি ডেটাসেটগুলি নির্বাচন করে, তবে সমস্যাটি হ'ল এটি বাউন্ডিং বাক্স দ্বারা নির্বাচন করে , সুতরাং স্পষ্টতই পয়েন্টগুলি আমি ফিরিয়ে আনতে আগ্রহী না:
আমি কিউগিস ব্যবহার না করে বহুভুজের মধ্যে কেবলমাত্র ফিরে আসা পয়েন্টগুলি সম্পর্কে যেতে পারি: সিলেক্টলিওকেশন ?
আমি () এবং ছেদ (()) পদ্ধতিগুলি ব্যবহার করার চেষ্টা করেছি , কিন্তু আমি তাদের কাজ করতে না পারায়, আমি উপরের কোডটি অবলম্বন করেছি। তবে সম্ভবত তারা সব পরে চাবিকাঠি।