Ini adalah tindak lanjut dari pertanyaan sebelumnya . Anda akan melihat saya adalah pengguna PostGIS baru.
Saya telah melihat validitas topologi dalam data saya dan menemukan sekitar 1700 masalah topologi dalam dataset landcover (poligon). Ini semua "Ring Self_intersection".
Dengan menggunakan beberapa informasi yang berguna dalam presentasi ini oleh Paul Ramsay (halaman 20), saya telah berupaya untuk melakukan buffer data saya sesuai:
UPDATE schema.data SET the_geom = buffer (the_geom, 0.0) WHERE isvalid (the_geom) = false dan isvalid (buffer (the_geom, 0.0)) = true;
Tapi saya mendapat respons:
PEMBERITAHUAN: Ring Self-intersection at atau near point (diedit) ERROR: baris baru untuk relasi "sgm_buffer" melanggar batasan periksa "cementce_geotype_the_geom "
********** Kesalahan **********
GALAT: baris baru untuk hubungan "sgm_buffer" melanggar batasan periksa "menegakkan_geotype_the_geom" Keadaan SQL: 23514
Saya juga sudah mencoba:
UPDATE csgn.sgm_buffer SET the_geom = buffer (the_geom, 0.0)
dan dapatkan:
GALAT: baris baru untuk relasi "sgm_buffer" melanggar batasan periksa "cementce_geotype_the_geom "
********** Kesalahan **********
GALAT: baris baru untuk hubungan "sgm_buffer" melanggar batasan periksa "menegakkan_geotype_the_geom" Keadaan SQL: 23514
Jadi, apakah saya berasumsi bahwa teknik buffer ini tidak akan berfungsi pada masalah saya? Atau saya melakukan sesuatu yang salah?
Mr Ramsay kemudian melanjutkan dalam dokumen yang sama untuk menyarankan teknik tambahan untuk menangani "angka 8" poligon. Saya tidak sepenuhnya mengerti bagaimana menuliskan ini dalam kode lengkap (atau apa yang dilakukannya dan apakah itu akan membantu saya):
SELECT ST_BuildArea (ST_Union ('LINESTRING EMPTY', ST_ExteriorRing ('POLYGON ((...))'
Jadi .... adakah yang bisa membantu? Ini membuktikan mimpi buruk nyata dengan rentang waktu saya yang ketat dan keterampilan yang terbatas di PostGIS.
ST_Multi()
untuk memaksa semua poligon menjadi MULTIPOLYGON
s (ini asumsi)