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 riverlớ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)