Saya mencoba mencapai yang setara dengan alat Dissolve dari ArcGIS untuk Desktop menggunakan ST_Union dari PostGIS tetapi sepertinya saya tidak mendapatkan hasil yang diharapkan.
Saya punya satu tabel yang memiliki atribut tertentu dengan Geometri Poligon. (seperti FID, Locstat, Loccnt, Shape)
Ini pertanyaan saya:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
Jawaban:
Masalah Anda kemungkinan karena apa yang Anda sertakan dalam grup dengan bidang.
ST_UNION adalah fungsi agregat, artinya dibubarkan berdasarkan apa yang Anda tentukan sebagai
GROUP
parameter.Inilah yang Anda masukkan:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
Menurut ini, Anda mengelompokkan menurut Anda
fid
, yang mungkin merupakan pengidentifikasi unik, dan juga olehboundaryshape
, yang merupakan geometri. Masalah dengan ini adalah bahwa sangat tidak mungkin bahwa fitur berbagi ID unik, akan memiliki geometri yang identik. Oleh karena itu,ST_Union
mungkin akan berakhir dengan sesuatu seperti berikut ini:Dalam hal ini, Anda hanya boleh dibubarkan berdasarkan pengenal unik Anda, kecuali Anda benar-benar memiliki sejumlah geometri duplikat dengan yang sama
fid
, yang Anda coba singkirkan. Bahkan dalam situasi itu, Anda hanya perlu mengelompokkan berdasarkanfid
, dan serikat akan mengurus duplikasi geometri.Saya akan mencoba yang berikut:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;
Itu akan memberi Anda hasil yang diinginkan melarutkan semua fitur berdasarkan atribut umum
fid
.Ini dokumen bantuan di situs PostGIS: ST_Union
Lihat contoh pertama yang tercantum di bagian bawah dan perhatikan bahwa itu tidak termasuk geometri di bagian grup.
sumber