QGIS: वर्चुअल फ़ील्ड बनाते समय स्ट्रिंग स्वरूपण
मैं काउंटी सीमाओं के साथ अमेरिकी जनगणना जनसंख्या अनुमानों में शामिल होना चाहूंगा ।
जनसंख्या का अनुमान परत ( 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")
... लेकिन जहां तक मैं बता सकता हूं, ऐसा कोई कार्य मौजूद नहीं है। इससे निपटने का सबसे अच्छा तरीका क्या है?
जवाब
इसको आजमाओ :
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 ): (क्योंकि मुझे यकीन नहीं था कि आपके क्षेत्र वर्ण थे)एक संख्या को स्ट्रिंग में परिवर्तित करता है।
|| : दो तारों को समेटना