2つのテーブルに2セットのポリゴンがあります。セットは互いにオーバーラップします。セットAの各ポリゴンについて、最も重なるセットBのポリゴンのIDを取得します。PostGIS拡張機能を備えたPostgreSQLを使用しています。
SQLについては、true / false条件に基づいてしか参加できないことを知っています。したがって、これは機能しません:
SELECT
a.id as a_id,
b.id as b_id,
FROM
a
JOIN
b
ON
max(ST_Area(ST_Intersection(a.geom, b.geom)))
max()をON句に含めることはできないためです。
ST_Intersects()
は真/偽のテストであるため、それに参加できますが、セットAのポリゴンはセットBの複数のポリゴンと重複することが多く、どれが最も重複するかを知る必要があります。ST_Intersectsは、重複の範囲に関係なく、最初に遭遇した重複IDを単に返すだけです。
これは実行可能であるように思えますが、それは私を超えています。何かご意見は?
DISTINCT ON
これは私にとって初めてのことです。この文脈では非常に便利です。