Cách đúng để tính sự khác biệt giữa hai lớp là gì? Tôi đã thử sử dụng cách tiếp cận sau:
SELECT ST_Difference(river.geom, lakes.geom)
FROM river LEFT JOIN lakes ON ST_Intersects(river.geom, lakes.geom)
Nhưng trong đầu ra, tôi mất hình học của river
lớp không giao với bất kỳ hình học nào trong đó lakes
. Có vẻ như tham gia trái không hoạt động như mong đợi.
Hiện tại, tôi đang sử dụng một phương pháp khác, nhưng tôi không chắc điều này là chính xác:
SELECT ST_Difference(river.geom, lakes.geom)
FROM river JOIN lakes ON ST_Intersects(river.geom, lakes.geom)
UNION
SELECT river.geom
FROM river JOIN lakes ON NOT ST_Intersects(river.geom, lakes.geom)