すぐに忘れるので備忘録です。
QGISでフィールド計算機を使った計算を行う際に、カレント地物(feature)の属性情報(attribute)は直接使えますが、次の地物の属性情報を使おうとしたい時があります。
a[$id+1]とかしたいのですが、受け付けてくれませんw
計算式を示します。
attribute(get_feature_by_id(@layer,$id+1),’name’)
※nameには、属性名が入ります。
以下にそれぞれの関数のコーリングシーケンスを記載します。
【attirute】
・現在の地物の属性値を取り出す場合
attribute(attribute_name)
return : 属性値
・指定された地物の属性情報を取り出す場合
attribute(feature,attribute_name)
return:属性値
【get_feature_by_id】
get_feature_by_id(layer,feature_id)
return:layerでとIDで指定された地物(feature)
この辺りは、QGISの日本語翻訳とシステム上で使われる言葉(英語)が入り混じって解り難くなってしまっているところかも知れませんね。
サンプルでは、get_feature_by_idで@layerを指定しています。カレントレイヤが指定されます。
次に、$id+1でカレントID+1つまり次のIDを指定しています。
これで、次に地物のfeatureが返されます。
attribute関数で指定するfeatureの特定が成されます。
さらに、欲しい属性名をしていします。
「”(ダブルコーテーション)」ではなく、「’(シングルコーテーション)」で括ることで、文字列で属性名を指定しています。
「”」だと、属性そのものを指定してしまうというところに注意が必要です。
意外と、この辺りの記載が無くて、調べるのに一苦労しました。
たまにしかやらないから、いつも忘れてしまうんですよね(^^ゞ
次からはこのメモが役に立ってくれることを期待しますw