¿Cuál es la forma correcta de calcular la diferencia entre dos capas? Traté de usar el siguiente enfoque:
SELECT ST_Difference(river.geom, lakes.geom)
FROM river LEFT JOIN lakes ON ST_Intersects(river.geom, lakes.geom)
Pero en la salida, pierdo las geometrías de la river
capa que no se cruzan con ninguna geometría lakes
. Parece que la combinación izquierda no funciona como se esperaba.
Actualmente, estoy usando otro enfoque, pero no estoy seguro de que sea correcto:
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)