আমি একক প্রয়োগের মধ্যে পাইকগিস ব্যবহার করছি g এখন আমি নিয়ম অনুযায়ী ফিল্টারএক্সপ্রেশন হিসাবে ব্যবহার করতে একটি কাস্টম এক্সপ্রেশন তৈরি করতে চেয়েছিলাম ruleBasedRendererV2
। (আমি বিদ্যমান ফাংশনগুলির সাথে রেন্ডারারের চেষ্টা করেছি এবং সবকিছু ঠিকঠাক কাজ করেছে!)
কাস্টম qgisfunction
(বিটওয়াইস এবং ফাংশন - যেমন কোনও ফাংশন এখনও নেই) এর মতো দেখায়:
from qgis.utils import qgsfunction
@qgsfunction(args="auto", group='Python')
def bitwise_and(value1, value2, feature, parent):
return value1 & value2
আমি এটি নিবন্ধ করার চেষ্টা করেছি, এর মাধ্যমে:
from qgis.core import QgsExpression
QgsExpression.registerFunction(bitwise_and)
এর মাধ্যমে অভিব্যক্তিটি পরীক্ষা করা:
expressionString = 'bitwise_and(2, 2) = 2'
exp = QgsExpression(expressionString)
if exp.hasParserError():
print(exp.parserErrorString())
( 2=2
তাই সর্বদা দেওয়া True
) ফাংশন নিবন্ধকরণের পরে কাজ করে এবং যদি ব্যর্থ হয় ails তবে তবুও, আমি কোনও নিয়মের মধ্যে প্রকাশটি ব্যবহার করতে পারি না ...
এই মুহুর্তে, ফাংশনযুক্ত ফাইলটি আমার প্রকল্প ফোল্ডারে উপরে রয়েছে যা স্বয়ংক্রিয়ভাবে PATH এর সাথে অন্তর্ভুক্ত রয়েছে, তাই না ?! (নাথন উড্রোর মতে, ফাইলটি PATH- এ যে কোনও জায়গায় স্থাপন করা যেতে পারে - https://nathanw.net/2012/11/10/user-defined-expression-funitions-for-qgis/ দেখুন )।
আপডেট: ফাংশনটির নিবন্ধকরণ এখন পর্যন্ত কাজ করে উপরের কোড সহ - এখন সমস্যাটি নিজেই ফাংশনটিতে রয়েছে ...
আপডেট # 2:
খুব অদ্ভুত! do_nothing
দুটি আর্গুমেন্ট পাওয়া সহজ ফাংশনটি আমার কোডে ভাল কাজ করে:
@qgsfunction(args="auto", group='Python')
def do_nothing(value1, value2, feature, parent):
return value1
এক্সপ্রেশন ব্যবহার করে expString = 'do_nothing(2, 2) = 2'
আপডেট # 3:
সরল পরিবর্তন do_nothing
করতে add_one
আর কাজ করে না:
@qgsfunction(args="auto", group='Python')
def add_one(value1, value2, feature, parent):
return value1 + 1
এটি মাধ্যমে কল expString = 'add_one(2, 2) = 3'
। সে কারণেই আমি মনে করি এটির রিটার্নিং টাইপের সাথে কিছু করার আছে ?!
@qgsfunction
আপনার কোডে ফাংশন, হিসাবে আপনি কোড ফাংশন নির্ধারণ করুন। আপনি expressions
যদি নিজের স্ক্রিপ্টটি কেবল মূল অ্যাপ্লিকেশনটির জন্য তৈরি করে থাকেন তবে আপনি ফোল্ডারটি এড়িয়ে যেতে পারেন
do_nothing
)। তবে আমার মূল ফাংশনটি bitwise_and
এখনও কাজ করে না। এখন, আমি মনে করি এটির ফাংশনটির রিটার্ন টাইপের সাথে কিছু করার আছে do_nothing works
, তবে add_one
নেই!
~/.qgis2/python/expressions/
কিউজিআইএস পুনরায় লোড করুন এবং ফাংশনটি এক্সপ্রেশন বিল্ডার বিভাগে পাওয়া যায় পাইথন