Ho due serie di poligoni in due tabelle. I set si sovrappongono. Per ogni poligono nel set A, vorrei ottenere l'ID del poligono nel set B che si sovrappone maggiormente. Sto usando PostgreSQL con l'estensione PostGIS.
So abbastanza su SQL per sapere che puoi unirti solo in base a condizioni vere / false. Quindi questo non funzionerà:
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)))
perché max () non può essere nella clausola ON.
ST_Intersects()
è un test vero / falso, quindi potrei unirmi a questo, ma i poligoni nel set A spesso si sovrappongono con più di un poligono nel set B, e devo sapere quale si sovrappone di più . Presumibilmente ST_Intersects restituirebbe semplicemente il primo ID di sovrapposizione rilevato, indipendentemente dall'entità della sovrapposizione.
Sembra che dovrebbe essere fattibile, ma è oltre me. qualche idea?
DISTINCT ON
è nuovo per me - molto utile in questo contesto.