QGIS फ़ील्ड कैलकुलेटर में सशर्त विवरणों का सिंटैक्स


12

मेरे पास एक आकृति है जिसे मुझे संशोधित करने की आवश्यकता है। विशेषताओं के साथ एक कॉलम "क्लास" है: "ए", "बी" और "सी"। मुझे "ए" को "1", "बी" को "2" और "सी" को "3" में बदलने की आवश्यकता है। मैंने इसे case whenफंक्शन के साथ आजमाया । एक मामले के साथ यह एक समस्या नहीं है लेकिन यह पंक्ति में 3 के साथ कैसे काम करता है?

क्या FieldCalculatorफ़ंक्शन के साथ एक मॉडल बनाना भी संभव है ?


मुझे लगता है मैं यह समझ से बाहर! क्या यह सही है?

CASE
  WHEN "VSt_K" IS 'E' THEN '5'
  WHEN "VSt_K" IS 'A' THEN '1'
  WHEN "VSt_K" IS 'B' THEN '2'
  WHEN "VSt_K" IS 'C' THEN '3'
END

लेकिन मैं मॉडलर FieldCalculatorफ़ंक्शन में इसका उपयोग नहीं कर सकता ...

जवाबों:


14

यदि आप स्ट्रिंग प्रकार के क्षेत्र की गणना कर रहे हैं , तो यह सही सिंटैक्स है:

CASE 
  WHEN "VSt_K" = 'A' THEN '1'
  WHEN "VSt_K" = 'B' THEN '2'
  WHEN "VSt_K" = 'C' THEN '3'
END

इसके बजाय, अगर यह पूर्णांक प्रकार का है:

CASE 
  WHEN "VSt_K" = 'A' THEN 1
  WHEN "VSt_K" = 'B' THEN 2
  WHEN "VSt_K" = 'C' THEN 3
END

संपादित करें

Advanced Python Field Calculatorप्रोसेसिंग टूलबॉक्स का सिंटैक्स मानक QGIS फील्ड कैलकुलेटर से अलग होता है। तो आपको पायथन का उपयोग करते हुए अपनी सशर्त अभिव्यक्ति लिखना चाहिए:

वैश्विक अभिव्यक्ति:

def getValue(x):
    if x == 'A':
        value = '1'
    elif x == 'B':
        value = '2'
    elif x == 'C':
        value = '3'
    # ...and so on
    return value

सूत्र:

value = getValue( <VSt_K> )

नोट: यह Advanced Python Field Calculatorमॉडलर में उपयोग करना संभव है , हालाँकि आपको स्रोत फ़ील्ड को सीधे इसके सूत्र में निर्दिष्ट करना होगा, क्योंकि इस एल्गोरिथम का उपयोग करते समय फ़ील्ड को इनपुट मापदंडों के रूप में उपयोग नहीं किया जा सकता है। वैकल्पिक रूप से, आप डिफ़ॉल्ट सूत्र वाले इनपुट स्ट्रिंग पैरामीटर को परिभाषित कर सकते हैं। जब आप मॉडल चलाते हैं, तो आप अंततः फॉर्मूला इनपुट पैरामीटर में स्रोत फ़ील्ड को बदल सकते हैं, इस प्रकार अन्य डेटा के साथ मॉडल को पूरी तरह से पुन: प्रयोज्य बना सकते हैं।


धन्यवाद, यह काम करता है! लेकिन क्या आप यह भी जानते हैं कि मैं मॉडल में फ़ील्ड कैलकुलेटर (दिखाए गए सिंटैक्स के साथ) का उपयोग कैसे कर सकता हूं?
पिंपल ३१'१४

मैंने उत्तर में और विवरण जोड़ दिए हैं, यह बताते हुए कि यह कैसे करना है। उम्मीद है की यह मदद करेगा।
एंटोनियो फाल्कियानो

धन्यवाद! मैंने कोशिश की लेकिन एक छोटी सी समस्या है। अब परिणाम यह है कि मुझे बस "सी" "3" में बदल दिया गया। जब मैंने 'elif x ==' D ': value =' 4 'स्ट्रिंग जोड़ा तो मुझे केवल "D" "4" में बदल गया।
पिंपल ३१'१४

यदि आप खरोंच से एक नए क्षेत्र की गणना करते हैं, तो इसे उम्मीद के अनुसार काम करना चाहिए।
एंटोनियो फाल्कियानो

मैं नहीं जानता कि क्यों, लेकिन जब Im अब मेरे मॉडल को चला रहा है (कुछ भी नहीं बदलता है) यह कहता है: ... वापसी मान, FORMULA = मान = getValue () एल्गोरिथ्म में त्रुटि को अंजाम देने में त्रुटि हुई 0 असाइनमेंट से पहले संदर्भित 'स्थानीय चर' मान अधिक विवरण के लिए लॉग देखें
पिंपल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.