QGIS: String-Formatierung beim Erstellen eines virtuellen Feldes
Ich möchte mich den Schätzungen der US-Volkszählung mit Kreisgrenzen anschließen .
Die Bevölkerungsschätzungsschicht ( co-est2019-alldata
) enthält STATE
und COUNTY
Felder mit staatlichen und regionalen FIPS-Codes wie folgt:
ZUSTAND | BEZIRK |
---|---|
36 | 51 |
1 | fünfzehn |
Die County Boundary ( cb_2018_us_county_5m
) - Ebene enthält dieselben Werte, jedoch mit leicht unterschiedlicher Formatierung und zusätzlich ein GEOID
Zeichenfolgenfeld, das die beiden kombiniert:
STATEFP | COUNTYFP | GEOID |
---|---|---|
36 | 051 | 36051 |
01 | 015 | 01015 |
QGIS unterstützt das Verbinden mehrerer Felder nicht . Eine häufige Problemumgehung besteht darin, ein neues virtuelles Feld zu erstellen, in dem die Zielattribute kombiniert werden. Ich möchte ein virtuelles Feld in der Bevölkerungsschicht erstellen, das mit dem GEOID
Feld in der Kreisgrenzschicht übereinstimmt .
Das wäre einfach, wenn es eine äquivalente Funktion gäbe sprintf
, denn dann könnte ich einfach schreiben:
sprintf('%02s%03s', "STATE", "COUNTY")
... aber soweit ich das beurteilen kann, gibt es keine solche Funktion. Was ist der beste Weg, um damit umzugehen?
Antworten
Probier diese :
lpad(to_string("STATE"), 2, '0') || lpad(to_string("COUNTY"), 3, '0')
kehrt zurück
if "STATE"
= 1
und "COUNTY"
= 15
: 01015
if "STATE"
= 22
und "COUNTY"
= 5
:22005
Aus der Dokumentation:
lpad (
string
,width
,fill
) ( doc ):Gibt eine links aufgefüllte Zeichenfolge mit einem Füllzeichen auf die angegebene Breite zurück. Wenn die Zielbreite kleiner als die Länge der Zeichenfolge ist, wird die Zeichenfolge abgeschnitten.
to_string (
number
) ( doc ): (weil ich nicht sicher war, ob Ihre Felder Zeichen waren)Konvertiert eine Zahl in eine Zeichenfolge.
|| : Verketten Sie zwei Zeichenfolgen