QGIS में "फील्ड मैपिंग" सिंटैक्स में बैचेड रिफलेक्टर फील्ड्स टूल क्या है?


10

QGIS में, प्रोसेसिंग टूलबॉक्स में यह अच्छा उपकरण "रिफैक्टर फील्ड्स" है:

रिफ्लेक्टर फील्ड्स उपकरण

एक परत पर इसका उपयोग करना काफी सीधा है।

हालाँकि, जब आप इसे बैच मोड में उपयोग करने की योजना बनाते हैं, तो कोई "फ़ील्ड मैपिंग" टेक्स्टबॉक्स देख सकता है । मैं वहाँ उपयोग किए जाने वाले वाक्यविन्यास का एक उदाहरण देख रहा हूँ । मुझे अभी तक कोई विशिष्ट दस्तावेज नहीं मिला है।

रिफ्लेक्टर बैच दिया


जीयूआई से एक रीफैक्टरिंग चलाने के बाद, आप प्रोसेसिंग -> इतिहास मेनू (Ctrl + Alt + H)
kadarivan

जवाबों:


7

यह करना बहुत सहज नहीं है, लेकिन उस पाठ बॉक्स के लिए आवश्यक सिंटैक्स है (मैं इसे कई पंक्तियों में केवल स्पष्टता के लिए लिखता हूं):

{'expression': u'type the expression here',
 'length': <type the length>,
 'type': <code of the type>,
 'name': u'type the field name here',
 'precision': <type the precision>}

उदाहरण के लिए (घुंघराले कोष्ठक का उपयोग करने के लिए रीबर):

{'expression': u'"FLAG1"+"FLAG2"',
 'length': 20, 'type': 6,
 'name': u'FLAG1',
 'precision': 5}

कॉमा द्वारा अलग किए गए इनपुट फ़ील्ड की संख्या के समान आपको ऊपर की तरह कई पंक्तियों को लिखना होगा। उदाहरण के लिए, यदि आपकी परत में तीन फ़ील्ड हैं:

{'expression': u'"FLAG1"+"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG1', 'precision': 5}, {'expression': u'100*"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG2', 'precision': 5}, {'expression': u'"100-"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG3', 'precision': 5}

और यह काम करना चाहिए (यह मेरे लिए काम किया)।

कृपया ध्यान दें कि आप इस शब्दकोश-उन्मुख सिंटैक्स का उपयोग करने से बच सकते हैं और सीधे आवश्यक मानों का उपयोग कर सकते हैं। उदाहरण के लिए, पहले उदाहरण के संदर्भ में, आप बस उपयोग कर सकते हैं:

{u'"FLAG1"+"FLAG2"', 20, 6, u'FLAG1', 5}

यदि आप इस सिंटैक्स का उपयोग नहीं करते हैं, तो निम्न त्रुटि दिखाई जाएगी:

गुम पैरामीटर मान: फ़ील्ड मैपिंग (पंक्ति 1)


2
क्या आप कृपया समझा सकते हैं कि किस प्रकार के कोड का मतलब है? मैंने कोशिश की 3 का उपयोग करके यह स्ट्रिंग के लिए है (क्योंकि यह ड्रॉपडाउन विकल्पों में 3 है) लेकिन मुझे एक त्रुटि मिली: 'int' ऑब्जेक्ट में कोई विशेषता नहीं है ' getItem ' अधिक विवरण के लिए लॉग देखें। मेरे द्वारा उपयोग किया गया कोड है: {u '' 'FLAG' ', 0, 3, u'FLAG', 0} मेरी एक परत के लिए जहाँ {'अभिव्यक्ति': u '' FLAG '', 'लंबाई': 0, ' टाइप ': 3,' नाम ': u'FLAG', 'परिशुद्धता': 0}।
JAT86

@ JAT86 यह वह संख्या है जो डेटा प्रकार (यानी इंट, स्ट्रिंग और इसी तरह) की पहचान करती है। दुर्भाग्य से, मुझे उनके लिए एक संदर्भ नहीं मिला, लेकिन मुझे सबसे अधिक उपयोग किए जाने वाले प्रकारों के लिए मानों को याद रखना चाहिए: 2 उदाहरण के लिए, डबल के लिए 6 और स्ट्रिंग के लिए 10 । इसके अतिरिक्त, शायद आपको 0क्षेत्र की लंबाई (कम से कम 1!) के लिए निर्दिष्ट नहीं करना चाहिए । कृपया, मुझे बताएं कि क्या आपने समस्या हल कर दी है।
माजरी

त्वरित प्रतिक्रिया के लिए धन्यवाद। शायद बैच प्रसंस्करण मैं जितना सोचा था उससे कहीं अधिक जटिल है। मैंने लंबाई के लिए कम से कम 1 और कोड के प्रकार के लिए 10 का उपयोग करने की कोशिश की: {u '"FLAG"', 1, 10, u'FLAG ', 0} फिर भी, त्रुटि दिखाई देती है:' int 'ऑब्जेक्ट में कोई विशेषता नहीं है' getItem 'अधिक जानकारी के लिए लॉग देखें। मेरी परत में निम्नलिखित विशेषताएं हैं: नाम: ध्वज, प्रकार: स्ट्रिंग, लंबाई: 0, परिशुद्धता: 0, अभिव्यक्ति: "ध्वज"
JAT86

@ JAT86 क्या GUI से उपकरण चलाने से कोई समस्या होती है?
mgri

अगर GUI से आपका मतलब सिंगल लेयर है, नहीं तो इसमें कोई समस्या नहीं थी। FLAG कॉलम को "हटाए गए चयनित क्षेत्र पर क्लिक करने" पर सफलतापूर्वक हटा दिया गया था और इसे एक नई परत "Refactored" में सहेजा गया था।
19

2

इसके समान एक अन्य एल्गोरिदम है जिसका इंटरफ़ेस बैच प्रक्रिया को बेहतर बनाता है।

यहां छवि विवरण दर्ज करें


1
इंग्लिश इंग्लिश
BERA

प्रश्न में मेनू आइटम के लिए अंग्रेजी अनुवाद "फ़ील्ड को विशेषता तालिका में जोड़ें"
जे टेलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.