ベクタレイヤAのポイント周りのBの数を数えたいです.

39 views
Skip to first unread message

koshi

unread,
Sep 25, 2022, 11:05:57 AMSep 25
to QGIS初心者質問グループ
質問なのですがポイントレイヤAのそれぞれの点から60m以内のポイントレイヤBの点の数を数えてAのデータに列を加えたいのですが、以下の式のどこが違うでしょうか?AをBに書き換えてもうまくいきませんでした.すべての要素が0になってしまいます.
もしくはプロセッシングツールの機能で計算できるでしょうか.

aggregate(
    'A',
    'count',
    $id,
    filter:=distance(
        $geometry,
        geometry('B' )
        ) <= 60
    )

このページを参考にしています。
https://gis.stackexchange.com/questions/434388/counting-points-within-certain-distance-of-each-other-in-qgis

koshi

unread,
Sep 26, 2022, 9:03:24 AMSep 26
to QGIS初心者質問グループ
他のサイトでの質問で解決しました.
一応,フィールド計算式を書いておきます.

aggregate( 'B', 'count', $id, filter:=distance( $geometry, geometry('@parent' ) ) <= 60 )
array_length( overlay_nearest ( 'B', $id, limit:=-1, max_distance:=60 ) )
どちらも同じ値が求まりました.
フィールド計算機やpythonコンソールを使いこなせるようになりたいものです.
2022年9月26日月曜日 0:05:57 UTC+9 koshi:

キタ

unread,
Sep 26, 2022, 10:22:40 AMSep 26
to QGIS初心者質問グループ
解決したようですが、プロセシングツールでの方法も書いておきますね。
  1. ポイントレイヤAに 重複しないID列がない場合は、 「自動インクリメント属性を追加」でユニークなIDを作成しておきます。
  2. 「バッファ」で60mのバッファ(円のポリゴンレイヤ)を作成します。
  3. (バッファレイヤにはポイントAの属性がコピーされています)
  4. 「ポリゴン内の点の数」を実行し、バッファポリゴンに重なるポイントBのポイント数をカウントします。(作成されたポリゴンレイヤを「カウントバッファレイヤ」と呼びます。
  5. ポイントAのプロパティで「テーブル結合」でIDをキーコードとしてカウントバッファレイヤの属性(ポイントBのカウント列)を結合します。
    (プロセシングツールの「属性テーブルで結合」ではテーブル結合した新しいレイヤを作成できます)
段階を踏む必要がありますが、プロセシングツールでも行うことが可能です。

キタ

2022年9月26日月曜日 22:03:24 UTC+9 koshi:
Reply all
Reply to author
Forward
0 new messages