¿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)
postgis
attribute-joins
drnextgis
fuente
fuente
El problema aquí no es la unión izquierda, que funciona como se esperaba. Pero cuando la consulta llega a un río que no se cruza con un lago, alimentará la función ST_Difference con NULL como el segundo argumento que parece devolver nulo.
/ Nicklas
fuente