কোনও বৈশিষ্ট্যের অবজেক্টের পিতামাতার স্তরটি সরাসরি খুঁজে বের করার কোনও উপায় বা কিউজেস ফিচার শ্রেণিতে কোনও পদ্ধতি থেকে এটি নির্বাচিত কিনা তা মনে হচ্ছে না।
এর অনুরূপ পন্থাটি vlayer.selectedFeatures()
পরীক্ষা করা হয় এটি feat.id()
রয়েছে কিনা vlayer.selectedFeaturesIds()
। কিউজেস ফিচার আইডিগুলি অন্য ভেক্টর স্তরগুলির সাথে কেবল তাদের নিজস্ব স্তরের সাথে তুলনা করে অনন্য মান নয়।
বিকল্পভাবে, আপনি vlayer.selectedFeatures()
সরবরাহকারীর সমস্ত বৈশিষ্ট্যের পরিবর্তে সেই বৈশিষ্ট্যগুলি দিয়ে শুরু করতে এবং পুনরাবৃত্তি করতে পারেন ।
তবুও আরেকটি পদ্ধতি হল প্রাথমিকভাবে প্রদত্ত ভেক্টর স্তরটির জন্য নির্বাচিত এবং অ-নির্বাচিত বৈশিষ্ট্য আইডির সেটগুলি (বা তালিকা) সংগ্রহ করা:
# previous relevant code
set_selids = set(vlayer.selectedFeaturesIds())
feat = QgsFeature()
vlayer.select([], QgsRectangle(), False)
set_allids = set()
while vlayer.nextFeature(feat):
set_allids.add(feat.id())
set_notselids = set_allids - set_selids
print set_allids
print set_selids
print set_notselids
আমি ভেক্টর লেয়ারের জন্য সমস্ত বৈশিষ্ট্য (বা আইডি) এর রেফারেন্স পুনরুদ্ধার করার জন্য একক কল খুঁজে পাচ্ছি না (যেমন এখনও ব্যবহার করতে হবে QgsVectorLayer.select()
এবং পুনরায় পুনরুক্তি করতে হবে QgsVectorLayer.nextFeature()
)।
সম্পাদনা করুন : QgsVectorLaer প্রতিফলিত করার জন্য আপডেট করা কোড নির্বাচন করা কল (সরাসরি সরবরাহকারীর দরকার নেই) পরিচালনা করতে পারে এবং মানচিত্রের ক্যানভাসে প্রকৃত নির্বাচিত বৈশিষ্ট্যগুলিকে গণ্ডগোল করে না, যার setSelectedFeatures()
আপডেট দরকার।
2 সম্পাদনা করুন : বৈশিষ্ট্য আইডি সেট তৈরির পরে, আপনি সেগুলি পুনরাবৃত্তি QgsVectorLayer.featureAtId(featid)
করতে পারেন এবং বৈশিষ্ট্যটি অ্যাক্সেস করতে ব্যবহার করতে পারেন।