ポリゴンレイヤの属性情報をポイントレイヤへ・・・

722 views
Skip to first unread message

初心者

unread,
Jan 28, 2020, 1:56:25 AM1/28/20
to QGIS初心者質問グループ
今年もお世話になります、QGIS初心者です。

今回悩んでいることは、
ポリゴンの中にポイントをいくつか置き、
ポイントに自動的にポリゴンの情報を割り当てられないかということです。

イメージ図↓↓
図1.png



フィールド計算機でごちゃごちゃ試してみたものの、うまくいきません(知識がないだけ?)

プラグインの「Point Sampling Tool」や属性情報の統合の場合、
新規レイヤとして生成されてしまうため、自動的に情報を割り当てることとはズレてしまいます。
新規レイヤとして生成された後にバッチ的なものを使えば簡単に割り当てることができるのかもしれませんが、
そのバッチ的なものの作り方も勉強中故、知識がありません。

どなたかヒントでも構いません。
何か思いついたこと等ありましたらご教授いただけると助かります!
よろしくお願いいたします。




ありた

unread,
Feb 1, 2020, 8:04:41 AM2/1/20
to QGIS初心者質問グループ
こんにちは

QGIS で少し高度なことを行う場合、プロセシングツールなどを利用しますが、結果は
新しいレイヤが自動的に作成され、既存のレイヤに対して属性を追加したり更新したり
することは多くのツールではできません。
(ディゾルブは融合され地物の数が減りますし、点のバッファはポリゴンとなり元の
 点レイヤで扱えませんし、元レイヤが編集不可であることもあるので、方針として
 新規レイヤ作成が基本となったのかと思います。またこれらの機能は既にあるデータに
 対して、ときには試行錯誤しながら解析することが多いというのもあるかと思います。)

新しいレイヤが作成されてよければ、ベクタメニューあるいはプロセシングツールの
「属性の空間結合」を利用すると可能です。
(ポリゴンの境界線上も対象にしたいときは intersects 、除外したいときは within

もし元のレイヤに反映させたいときは、あらかじめ元のレイヤで UUID などのユニークな
属性を用意しておき、属性の空間結合で作成された新規レイヤを作成。
フィールド計算機等でユニークな属性を利用し、新規レイヤの値を参照する。
といった方法があろうかと思います。



フィールド計算機は、対象のレイヤ内の N 個の地物に対しての計算が基本で、
別のレイヤの地物は get_feature などで参照することもできますが、属性値での
検索のみで、あまり高度なことはできません。
それ以上の、空間条件で判定するといったことを行うには「関数エディタ」でカスタム
関数を作成する必要があり、これは Python で記述する必要があります。

ありた

unread,
Feb 2, 2020, 8:13:03 AM2/2/20
to QGIS初心者質問グループ
こんにちは

やっつけですが、カスタム関数を組んでみました。

フィールド計算機→関数エディタタブ→左下のプラスボタン→ファイル名任意
(たとえば getFeatureAttribute など。識別のためのものです)→
エディタ欄に下記スクリプトを貼り付け→関数の保存と読み込みボタン


ポリゴンレイヤのフィールド計算機を開き @layer_id と入力し、レイヤ ID を確認。
点レイヤのフィールド計算機を開き、新規属性の追加あるいは既存属性の更新を選択し
次のように入力します。(境界線上を含むときは intersects 、ここでは name 属性を取得)
getFeatureAttribute('ポリゴンレイヤのレイヤID' , 'intersects', 'name')



また、応用例として点レイヤに属性を用意したのち、プロパティ→属性フォームタブを
開いて、目的の属性のデフォルト値に先述の式を入力することで地物作成時に自動で
取得することができます。
ついでに誤操作を避けるため編集可能のチェックを外しておいてもよいでしょう。
Reply all
Reply to author
Forward
0 new messages