অ্যাট্রিবিউট টেবিলের মধ্যে থাকা তথ্য পাওয়ার কী উপায় আছে, পাইকগিস ব্যবহার করে কলাম 2, সারি 2 তে বলুন?
অ্যাট্রিবিউট টেবিলের মধ্যে থাকা তথ্য পাওয়ার কী উপায় আছে, পাইকগিস ব্যবহার করে কলাম 2, সারি 2 তে বলুন?
উত্তর:
একটি স্তর প্রতিটি বৈশিষ্ট্য লুপ করতে, getFeatures()
জেনারেটর ব্যবহার করুন । এটি QgsFeature
স্তরের বৈশিষ্ট্যগুলির ( ) এর একটি পুনরাবৃত্তি প্রদান করে ।
for feature in layer.getFeatures():
pass # do something with feature
আপনি যদি কেবলমাত্র কোনও বৈশিষ্ট্যে আগ্রহী হন তবে স্তরটির সমস্ত বৈশিষ্ট্যের পরিবর্তে, আপনি এটি ব্যবহার করে QgsFeatureRequest
এটি এফআইডি করতে পারেন:
fid = 1 # the second feature (zero based indexing!)
iterator = layer.getFeatures(QgsFeatureRequest().setFilterFid(fid))
feature = next(iterator)
একবার আপনার কোনও QgsFeature
বস্তু থাকলে আপনি attributes()
সেই বৈশিষ্ট্যটির সাথে যুক্ত বৈশিষ্ট্যগুলি (ওরফে কলাম বা ক্ষেত্রগুলি) উদ্ধার করতে পদ্ধতিটি ব্যবহার করতে পারেন , যেমন:
# get the feature's attributes
attrs = feature.attributes()
# print the second attribute (note zero based indexing of Python lists)
print(attrs[1])
যদি আপনি কোনও সংখ্যার পরিবর্তে ক্ষেত্রটির নাম অনুসারে সূচনা করতে চান তবে আপনাকে ফিল্ড ম্যাপিংগুলি ব্যবহার করতে হবে:
idx = layer.fieldNameIndex('name')
print(feature.attributes()[idx])
লুপ চলাকালীন ক্ষেত্রের সূচকটি পরিবর্তন করা উচিত নয়, সুতরাং আপনাকে কেবল একবার এটি কল করতে হবে।
পাইকিজিআইএস কুকবুকে আরও তথ্য এবং উদাহরণ রয়েছে: http://www.qgis.org/pyqgis-cookbook/vector.html#iterating-over-vector-layer
হালনাগাদ
আপনি ব্যবহার করে আরো অনেক কিছু সহজেই বৈশিষ্ট্য বৈশিষ্ট্য অ্যাক্সেস করতে পারেন QgsFeature
একটি মত dict
, যেমন
for feature in layer.getFeatures():
name = feature["name"]
আমি নিশ্চিত নই যে কোন সংস্করণটি এসেছে বা এটি সর্বদা উপস্থিত থাকলে।
ভেবেছিলাম আমি আসলে কিছু কোড যুক্ত করব, কারণ এই সমস্যাটি গুগল করা এই প্রশ্নটি ফিরিয়ে দেয় ... বেশিরভাগ লোক একটি লিঙ্কে একটি দ্রুত ব্যাখ্যা বা একটি কোড স্নিপেট পছন্দ করে যা এমন পৃষ্ঠাতে পরিচালিত করে যাতে প্রচুর পরিমাণে অতিরিক্ত তথ্য রয়েছে।
কোনও টেবিলের তথ্য পাওয়ার জন্য আপনাকে প্রথমে স্তরটির বৈশিষ্ট্যগুলি অ্যাক্সেস করতে হবে । আমার ক্ষেত্রে আমি বৈশিষ্ট্যগুলিকে একটি চলকতে রেখেছি। তারপরে আপনি বৈশিষ্ট্যগুলি লুপ করেন এবং প্রতিটি বৈশিষ্ট্যের জন্য আপনি এর বৈশিষ্ট্যগুলিতে কল করেন যা তাদের কলাম সূচক ব্যবহার করে মুদ্রণ করা যেতে পারে । উদাহরণস্বরূপ, আমি যদি দ্বিতীয় কলামের সমস্ত মান পেতে চাই, তবে আমি এটি করব:
lyr = iface.activeLayer()
features = lyr.getFeatures()
for feat in features:
attrs = feat.attributes()
print attrs[1]
সক্রিয় স্তরের জন্য এটি কীভাবে করা যায় তা কেবল উপরের উত্তরগুলি দেখায়। আমি মনে করি, অনেক ক্ষেত্রে আপনি লেয়ার উইন্ডোতে যাচাই করা স্তর বা সক্রিয় স্তর নয় এমন স্তরের জন্য বলা বৈশিষ্ট্যটি সন্ধান করতে পারেন। নীচের কোডটি আপনার স্তরগুলির উইন্ডোতে যুক্ত সমস্ত স্তরগুলির একটি তালিকা পাবেন (তারা চেক করা বা সক্রিয় থাকলে তা নির্বিশেষে) এবং সারি 2, কলাম 2 এ বৈশিষ্ট্যটি পাবেন।
from qgis.core import QgsProject
layer = QgsProject.instance().mapLayersByName("myLayerName")[0]
value = layer.getFeature(2).attribute(2)
নোট ম্যাপলায়ারবাইনেম প্রদত্ত নামের সাথে স্তরগুলির একটি তালিকা ফেরত দেয়। আমি ধরে নিচ্ছি যে এই উদাহরণটির জন্য একটি বিদ্যমান আছে।