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


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.