はじめに
QGISのプロセッシングの処理結果は新規レイヤとして出力されます。
しかし、ソースファイルと複数のレイヤに依存関係がありソースファイルのパスを変えたくないなどの理由で、入力レイヤに処理結果を追加したいことがあります。
そこで、レイヤを直接更新できるフィールド計算機を使って、プロセッシングの処理結果を入力レイヤに追加する方法を紹介します。
既存レイヤに追加する属性結合イメージ
入力レイヤとして九州各県のポリゴンレイヤ、出力レイヤとしてゾーン統計(ベクタ)で最高標高を付加したポリゴンレイヤをサンプルとします。ソースファイルはgpkg形式で共通のfidフィールドが入力・出力レイヤ両方にあります。
ここで、入力レイヤに対してフィールド計算機を使用して、出力レイヤのdem_maxレイヤを属性結合します。
使用する関数
今回、フィールド計算機で使用する関数は、get_feature関数とattribute関数です。
関数の説明はフィールド計算機の関数・変数ツリー(名前が不明なので仮称)から見ることができます。get_feature関数でfidが一致するフィーチャ(地物)を取ってきて、attribute関数でそのフィーチャから属性値を取得します。
フィールド計算機による結合の式
2つの関数を組み合わせて、式を作りました。/* */の中と--の右はコメントです。
/*
フィールド計算機による結合
*/
attribute(
get_feature(
'結合レイヤ名', -- 地図のレイヤ → 結合レイヤ
'fid', -- 地図のレイヤ → 結合レイヤ → キー属性
"fid" ), -- フィールドと値 → キー属性
'取得属性名' -- 地図のレイヤ → 結合レイヤ → 取得属性
)
式の編集
フィールド計算機を開いて、作成する属性の名前と型を指定します。
上記の式をペーストし、パラメータを関数・変数ツリーをダブルクリックして入れ替えていきます。結合レイヤ名は、ダブルクリックするとIDになります。この例では、fidはそのままで大丈夫です。
フィールド計算機を実行すると、入力レイヤに最高標高の属性が追加されます。



