QGIS:仮想フィールドを作成するときの文字列フォーマット
Dec 10 2020
米国国勢調査の人口推計に郡の境界を付けて参加したいと思います。
人口推定レイヤー(co-est2019-alldata
)には、次のような州および郡のFIPSコードを含むフィールドが含まれSTATE
ていCOUNTY
ます。
状態 | 郡 |
---|---|
36 | 51 |
1 | 15 |
郡の境界(cb_2018_us_county_5m
)レイヤーには同じ値が含まれていますが、フォーマットがわずかに異なり、さらにGEOID
2つを組み合わせた文字列フィールドがあります。
STATEFP | COUNTYFP | ジオイド |
---|---|---|
36 | 051 | 36051 |
01 | 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')
戻り値
if "STATE"
= 1
and "COUNTY"
= 15
:01015
if "STATE"
= 22
and "COUNTY"
= 5
:22005
ドキュメントから:
LPAD( 、
string
、width
)fill
( DOC):塗りつぶし文字を使用して、左側に埋め込まれた文字列を指定された幅で返します。ターゲットの幅が文字列の長さよりも小さい場合、文字列は切り捨てられます。
to_string(
number
)(doc):(フィールドが文字かどうかわからなかったため)数値を文字列に変換します。
|| :2つの文字列を連結します