我在两个表中有两组多边形。这些集合彼此重叠。对于集合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()
是对/错测试,因此我可以参加,但是集合A中的多边形通常会与集合B中的多个多边形重叠,因此我需要知道哪个重叠最多。无论重叠的程度如何,ST_Intersects大概只会返回遇到的第一个重叠ID。
这似乎应该可行,但这超出了我。有什么想法吗?
DISTINCT ON
对我来说是新手-在这种情况下非常方便。