두 테이블에 두 개의 다각형 세트가 있습니다. 세트가 서로 겹칩니다. 세트 A의 각 다각형에 대해 세트 B의 다각형의 ID가 가장 겹치는 것을 원합니다. PostGIS 확장과 함께 PostgreSQL을 사용하고 있습니다.
나는 참 / 거짓 조건에 대해서만 조인 할 수 있다는 것을 알기에 SQL에 대해 충분히 알고 있습니다. 그래서 이것은 작동하지 않습니다 :
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()
true / false 테스트이므로 결합 할 수 있지만 세트 A의 다각형은 종종 세트 B의 둘 이상의 다각형과 겹치므로 어느 것이 가장 겹치는 지 알아야합니다 . ST_Intersects는 겹치는 정도에 관계없이 처음 겹친 ID를 반환합니다.
이것은 할 수 있어야하는 것처럼 보이지만 나 저쪽에 있습니다. 이견있는 사람?
DISTINCT ON
이 상황에서 매우 편리합니다.