¿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 rivercapa 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)