পাইথন ব্যবহার করে কিউজিআইএসে "অ্যাট্রিবিউট দ্বারা নির্বাচন করুন"?


16

কিউজিআইএস-এ পাইথন কমান্ড ব্যবহার করে "অ্যাট্রিবিউট সিলেক্ট" ফাংশনটি ব্যবহার করার কোনও উপায় আছে? আমার প্লাগইনে ব্যবহারকারীর একটি জিইউআইয়ের মাধ্যমে একটি মান প্রবেশ করা উচিত এবং এই মানটি কোনও ফাংশনে ব্যবহার করা উচিত যা এই বৈশিষ্ট্যযুক্ত সমস্ত বৈশিষ্ট্য নির্বাচন করে। কলামের নামটি কোডটিতে স্থির করা হয়েছে, ফাংশনটি কেবল সঠিক মানের জন্য অনুসন্ধান করতে হবে।

আমার বর্তমান সমাধানে ফাংশনটি কিউজিআইএসকে একটি পোস্টগ্রিজ এসকিউএল ডাটাবেসের সাথে সংযুক্ত করে এবং একটি এসকিউএল স্টেটমেন্ট চালায়। এটি ফলাফল থেকে একটি সারণী তৈরি করে এবং টেবিলটি কিউজিআইএসে শেপফিল হিসাবে ভিজ্যুয়ালাইজ করা হয়।

মূলত বৈশিষ্ট্যগুলি হাইলাইট করার জন্য এবং নির্বাচনের নতুন শেফিল তৈরি না করার জন্য এটি যথেষ্ট। "অ্যাট্রিবিউট সিলেক্ট করুন" ফাংশনটি ব্যবহার করা অপ্রয়োজনীয় ডাটাবেস সংযোগও এড়িয়ে যায়।

পাইথনে "বৈশিষ্ট্য দ্বারা নির্বাচন করুন" ফাংশনটি ব্যবহার করার কোনও উপায় রয়েছে যাতে বৈশিষ্ট্যগুলি হাইলাইট হয়? কিউজিআইএস-এ ফাংশনটি ব্যবহার করে কোয়েরির সাথে মেলে না এমন সমস্ত বৈশিষ্ট্য অস্থায়ী ফাঁকা আছে যা খুব ভাল ok


1
এই উত্তরগুলির জন্য একটি Qgis 3 আপডেট দরকার।
মনস্টার মাশরুম

উত্তর:


8

হ্যাঁ. পাইথন বাইন্ডিংয়ের মাধ্যমে আপনি সমস্ত বৈশিষ্ট্যগুলি পেতে এবং নিজের প্লাগইনে অতিরিক্ত ফিল্টারিং প্রয়োগ করতে পারেন। রাইন্ডাউন এবং কয়েকটি উদাহরণের জন্য এই পাইকিজিআইএস কুকবুকের অংশটি দেখুন । তারপরে আপনি কেবল প্রত্যাশিত অভিধান থেকে কোনও অমোঘ ফলাফলকে বাদ দেবেন।

ভিজ্যুয়ালাইজেশন হিসাবে, আপনি সম্ভবত এখনও অন্য স্তর তৈরি করতে হবে, যেমন select()উপযুক্ত যুক্তি নেই। আপনি শারীরিক ফাইল তৈরি করতে না এড়াতে একটি মেমরি স্তর ব্যবহার করতে পারেন (এটিতে রান্নার বইটিতে রয়েছে)।

সম্পাদনা:

আসলে, আপনি ব্যবহার করতে পারেন selectedFeaturesIds()সঙ্গে setSelectedFeatures(ids)উপসেট আপনার তৈরি করা নির্বাচন পরিবর্তন। সরাসরি বাস্তবায়ন উদ্ধৃত:

/** Get a copy of the user-selected features */  
QList<QgsFeature> selectedFeatures();

/** Return reference to identifiers of selected features */
const QSet<qint64> &selectedFeaturesIds() const;

/** Change selection to the new set of features */
void setSelectedFeatures(const QSet<qint64> &ids);

কি করুণা! আমি ভেবেছিলাম কিউজিআইএস-এ এটি সম্ভব ছিল, কারণ আরকিজিআইএস-এ আরকিপি ব্যবহার করে এটিও সম্ভব। তবুও আপনার উত্তরের জন্য ধন্যবাদ!
ব্যবহারকারী এইচএইচ

সম্ভবত একটি উপায় আছে; আমি শুধু এটি জানি না। সাইটের অন্য ব্যবহারকারীদের কিছু সময় দিন - সম্ভবত কেউ করেন।
lynxlynxlynx

আমি মনে করি এটি অবশ্যই সম্ভব হবে। কিউজিআইএস-এ সমস্ত বৈশিষ্ট্য ভিজ্যুয়ালাইজ করা হয় যা নির্বাচনের সাথে মেলে, অন্য সমস্ত বৈশিষ্ট্য অস্থায়ীভাবে ফাঁকা হয়ে যায়।
ব্যবহারকারী এইচএইচ

এটি, আমি এটি খুঁজে পেয়েছি। কিউজিআইএস এটি মূলত করে, তবে দেখে মনে হচ্ছে এটি নির্বাচনটি সঠিকভাবে সামঞ্জস্য করার জন্য ইন্টারফেসের যথেষ্ট পরিমাণ প্রকাশ করে।
lynxlynxlynx

আপনি আমাকে একটি লিঙ্ক পাঠাতে পারেন?
ব্যবহারকারী এইচএইচ

9

কিউজিআইএস ২.২ থেকে শুরু করে এটি খুব প্রাকৃতিক উপায়ে সমর্থিতQgsFeatureRequest.setFilterExpression( unicode )পদ্ধতিটি ব্যবহার করে এটি কিউজিআইএস এক্সপ্রেশন ইঞ্জিনের মাধ্যমে করা যেতে পারে ।

# The important part: get the feature iterator with an expression
it = l.getFeatures( QgsFeatureRequest().setFilterExpression ( u'"Counties" = \'Norwich\'' ) )
# Set the selection
l.setSelectedFeatures( [ f.id() for f in it ] )

এটি সম্পর্কে সর্বোত্তম বিষয়: আপনার যদি সাম্প্রতিক কিউজিআইএস সংস্করণ (২.১০ এবং তারপরে) থাকে তবে এটি খুব সহজেই পঠনযোগ্য হওয়ার সাথে সাথে অন্যান্য সমাধানগুলির চেয়ে আরও বেশি পারফরম্যান্ট ডাটাবেসে সরাসরি ফিল্টার করা হবে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.