Apa cara yang tepat untuk menghitung perbedaan antara dua lapisan? Saya mencoba menggunakan pendekatan berikut:
SELECT ST_Difference(river.geom, lakes.geom)
FROM river LEFT JOIN lakes ON ST_Intersects(river.geom, lakes.geom)
Tetapi dalam output, saya kehilangan geometri dari river
layer yang tidak memotong geometri lakes
. Sepertinya gabung kiri tidak berfungsi seperti yang diharapkan.
Saat ini, saya menggunakan pendekatan lain, tetapi saya tidak yakin ini benar:
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
sumber
sumber
Masalahnya di sini bukan join kiri, yang berfungsi seperti yang diharapkan. Tetapi ketika query sampai ke sungai yang tidak bersinggungan dengan danau itu akan memberi makan fungsi ST_Difference dengan NULL sebagai argumen kedua yang tampaknya mengembalikan nol.
/ Nicklas
sumber