Was ist der richtige Weg, um die Differenz zwischen zwei Schichten zu berechnen? Ich habe versucht, den folgenden Ansatz zu verwenden:
SELECT ST_Difference(river.geom, lakes.geom)
FROM river LEFT JOIN lakes ON ST_Intersects(river.geom, lakes.geom)
Aber in der Ausgabe verliere ich die Geometrien der river
Ebene, die keine Geometrien in schneiden lakes
. Es sieht so aus, als ob Left Join nicht wie erwartet funktioniert.
Derzeit verwende ich einen anderen Ansatz, bin mir jedoch nicht sicher, ob dies korrekt ist:
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
quelle
quelle
Das Problem hierbei ist nicht die linke Verknüpfung, die wie erwartet funktioniert. Wenn die Abfrage jedoch an einen Fluss gelangt, der sich nicht mit einem See schneidet, wird die ST_Difference-Funktion mit NULL als zweitem Argument gespeist, das scheinbar null zurückgibt.
/ Nicklas
quelle