Yang saya butuhkan adalah menyatukan poligon berpotongan dalam satu geometri dan membiarkan yang lain tanpa perubahan.
Saya dapat melakukan ini menggunakan kueri berikut, yang menyatukan semua poligon menjadi satu geometri dan kemudian membuangnya ke yang terpisah.
INSERT INTO unioned(geom)
SELECT ST_MULTI((ST_Dump(ST_Union(geom))).geom) from footprints;
Masalahnya adalah bahwa saya memiliki lebih dari satu juta baris dalam database dan ST_Union
operasi tidak pernah berakhir. Apakah ada cara untuk mencapai hal yang sama tanpa bergabung dengan semua geometri?
ST_ClusterIntersecting
mengembalikan geometri dengan SRID = 0? Bagaimana ini bisa diselesaikan? Mencoba menjalankan permintaan berikut:INSERT INTO fixed_footprints(geom) SELECT ST_UnaryUnion(unnest(ST_ClusterIntersecting(geom))) as geom FROM footprints;
Saya mendapat kesalahan berikut:[22023] ERROR: Geometry SRID (0) does not match column SRID (4326)
INSERT INTO fixed_footprints(geom) SELECT ST_Multi(st_setsrid(ST_UnaryUnion(unnest(ST_ClusterIntersecting(geom))), 4326)) as geom FROM footprints;
Akan mencoba ini pada set yang lebih besarST_ClusterIntersecting
. Terima kasih telah menunjukkannya, saya akan memperbaikinya.