Qual é a maneira correta de calcular a diferença entre duas camadas? Eu tentei usar a seguinte abordagem:
SELECT ST_Difference(river.geom, lakes.geom)
FROM river LEFT JOIN lakes ON ST_Intersects(river.geom, lakes.geom)
Mas na saída, perco as geometrias da river
camada que não cruzam nenhuma geometria lakes
. Parece que a junção esquerda não funciona conforme o esperado.
Atualmente, estou usando outra abordagem, mas não tenho certeza se isso está correto:
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)