কিউজিআইএস পাইথন এপিআইয়ের মাধ্যমে নামে বৈশিষ্ট্য বৈশিষ্ট্য নির্ধারণ করছেন?


13

আমি এই কোডটি দিয়ে বিশিষ্ট নাম দ্বারা বৈশিষ্ট্য বৈশিষ্ট্যগুলি সেট করার চেষ্টা করি

pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
 attrName = 'test'
 feature[attrName] = 1

তবে ফলস্বরূপ আমি সমস্ত ক্ষেত্রে নুল। যদি আমি ব্যবহার করি

feature.setAttributes([1])

এটি সঠিকভাবে কাজ করে।

আমি কী ভুল করছি? [AttrName] = 1 বৈশিষ্ট্যটি কেন কাজ করে না?

আপডেট : এই সমাধানটি সন্ধান করুন

pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
 attrName = 'test'
 feature[attrName] = 1
 pr.changeAttributeValues({feature.id() : {pr.fieldNameMap()[attrName] : 1}})

উত্তর:


18

কিউজিআইএস ফিল্ডের নাম এবং সূচকগুলি ব্যবহার করতে পারে:

feature['fieldname'] = 10
feature[1] = 10

আপনি স্তরটিতে কিছু করার আগে আপনি সম্পাদনা মোডে রয়েছেন তা নিশ্চিত করুন:

layer.startEditing()
feature['fieldname'] = 10
layer.updateFeature(feature)

#Call commit to save the changes
layer.commitChanges()

-1

আফাইক, কিউজিআইএস বরাদ্দের জন্য ফিল্ডের নাম নয়, ফিল্ডের সূচী ব্যবহার করে। ব্যবহার করার চেষ্টা করুন feature[layer.fieldNameIndex(attrName)] = 1।


আমি চেষ্টা করি: feature.setAttribute(attrName, 1)এবং feature.setAttribute(layer.fieldNameIndex(attrName), 1)একই ফলাফলের সাথে (এপিআই রেফারেন্সের সূচক এবং নাম সহ বৈশিষ্ট্যটির জন্য দুটি সেটঅ্যাট্রিবিউট পদ্ধতি রয়েছে)
— dmitry.v.kiselev

feature[layer.fieldNameIndex(attrName)] = 1একই।
— dmitry.v.kiselev 20'14

আপনি গুণাবলী ( feature.initAttributes(len(attributes))) শুরু করেছেন?
— জানু Šিম্বের

যোগ feature.initAttributes(1)একই ফলাফল সঙ্গে। তবে চেক করুন feature[attrName]এবং 1 পেয়েছি যা আমি সন্ধান করছি। তবে আমি যদি গিরিতে অ্যাট্রিবিউট টেবিলটি খুলি তবে এখনও ন্যূনল আছে।
— dmitry.v.kiselev 20'14
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.