J'ai deux ensembles de polygones dans deux tables. Les ensembles se chevauchent. Pour chaque polygone de l'ensemble A, je voudrais obtenir l'ID du polygone de l'ensemble B qui se chevauche le plus. J'utilise PostgreSQL avec l'extension PostGIS.
Je sais juste assez de choses sur SQL pour savoir que vous ne pouvez adhérer qu'en fonction de conditions vraies / fausses. Donc ça ne marchera pas:
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)))
car max () ne peut pas être dans la clause ON.
ST_Intersects()est un test vrai / faux, donc je pourrais me joindre à cela, mais les polygones de l'ensemble A se chevauchent souvent avec plus d'un polygone de l'ensemble B, et j'ai besoin de savoir lequel se chevauche le plus . ST_Intersects retournerait probablement le premier ID de chevauchement rencontré, quelle que soit l'étendue du chevauchement.
Cela semble être réalisable, mais cela me dépasse. Des pensées?
DISTINCT ONest nouveau pour moi - très pratique dans ce contexte.