空間結合を使用しながら、入力レイヤーに結合フィールドを自動的に出力します

Aug 24 2020

たとえば、次の2つのレイヤーがあります。

  • city blockIDフィールドを持つポリゴンレイヤーcity block index
  • parking lotフィールドを持つポイントレイヤーparking lot size

レイヤーparking lot size内の各フィーチャの合計を知りたいland useので、空間結合関数を使用します。これが私のワークフローです:

  1. と呼ばれるフィールドを含むjoin attributes by location (summary)新しい一時的なものを作成するために使用します。joined layerparking lot size_sum
  2. city blockレイヤーのプロパティパネルに移動し、parking lot size_sumと呼ばれる新しいフィールドとしてフィールドを結合しますjoined layer_parking lot size_sum
  3. ではcity block層と呼ばれる新しいフィールドを作成しますtotal parking lot size
  4. から値をコピーしてjoined layer_parking lot size_sum、に貼り付けますtotal parking lot size
  5. 一時的なを削除しjoined layerます。

私がやりたいのcity blockは、parking lot sizeフィールドを要約して元のレイヤーに新しいフィールドを追加することだけです。しかし、私は上記のすべてのステップを実行する必要があります。それを行う簡単な方法はありますか?

回答

3 Taras Aug 24 2020 at 14:18

コメントで述べた解決策。

を通じて「仮想レイヤー」を使用するLayer > Add Layer > Add/Edit Virtual Layer...

次のクエリを使用すると、「街区」ごと「駐車場の合計サイズ」を知ることができます。

SELECT cb.*, SUM(pl."parking lot size") AS pl_sum
FROM "city block" AS cb
JOIN "parking lot" AS pl ON st_contains(cb.geometry, pl.geometry)
GROUP BY cb."city block index"