QGIS: वर्चुअल फ़ील्ड बनाते समय स्ट्रिंग स्वरूपण

Dec 10 2020

मैं काउंटी सीमाओं के साथ अमेरिकी जनगणना जनसंख्या अनुमानों में शामिल होना चाहूंगा ।

जनसंख्या का अनुमान परत ( co-est2019-alldata) में है STATEऔर COUNTYराज्य और काउंटी के कोड जैसे फ़ील्ड इस प्रकार हैं:

स्टेट COUNTY
३६ ५१
१५

काउंटी सीमा ( cb_2018_us_county_5m) परत में समान मान होते हैं लेकिन थोड़े अलग स्वरूपण और इसके अतिरिक्त एक GEOIDस्ट्रिंग फ़ील्ड जो दो को जोड़ती है:

STATEFP COUNTYFP जियोइड
३६ 051 36051 है
०१ 015 है 01015

QGIS कई क्षेत्रों में शामिल होने का समर्थन नहीं करता है , लेकिन एक आम समाधान एक नया वर्चुअल फ़ील्ड बनाना है जो लक्ष्य विशेषताओं को जोड़ती है। मैं जनसंख्या क्षेत्र में एक वर्चुअल फ़ील्ड बनाना चाहता हूं GEOIDजो काउंटी सीमा परत में फ़ील्ड से मेल खाती है ।

यह सरल होगा यदि कोई फ़ंक्शन समान होता sprintf, क्योंकि तब मैं बस लिख सकता था:

sprintf('%02s%03s', "STATE", "COUNTY")

... लेकिन जहां तक ​​मैं बता सकता हूं, ऐसा कोई कार्य मौजूद नहीं है। इससे निपटने का सबसे अच्छा तरीका क्या है?

जवाब

3 J.Monticolo Dec 10 2020 at 05:27

इसको आजमाओ :

lpad(to_string("STATE"), 2, '0') || lpad(to_string("COUNTY"), 3, '0')

लौटता है

अगर "STATE"= 1और "COUNTY"= 15: 01015
अगर "STATE"= 22और "COUNTY"= 5:22005

प्रलेखन से:

  • lpad ( string, ) width,fill ( doc ):

    भरण वर्ण का उपयोग करते हुए, बाईं ओर एक स्ट्रिंग को निर्दिष्ट चौड़ाई पर रखा जाता है। यदि लक्ष्य की चौड़ाई स्ट्रिंग की लंबाई से छोटी है, तो स्ट्रिंग को छोटा कर दिया जाता है।

  • to_string ( number) ( doc ): (क्योंकि मुझे यकीन नहीं था कि आपके क्षेत्र वर्ण थे)

    एक संख्या को स्ट्रिंग में परिवर्तित करता है।

  • || : दो तारों को समेटना