Lo que necesito es unir polígonos de intersección en una sola geometría y dejar a los demás sin cambios.
Puedo hacer esto usando la siguiente consulta, que une todos los polígonos en una sola geometría y luego los vuelca a los separados.
INSERT INTO unioned(geom)
SELECT ST_MULTI((ST_Dump(ST_Union(geom))).geom) from footprints;
El problema es que tengo más de un millón de filas en una base de datos y la ST_Union
operación nunca termina. ¿Hay alguna manera de lograr lo mismo sin unir todas las geometrías?
ST_ClusterIntersecting
devuelve geometría con SRID = 0? ¿Cómo se podría resolver esto? Intentando ejecutar la siguiente consulta:INSERT INTO fixed_footprints(geom) SELECT ST_UnaryUnion(unnest(ST_ClusterIntersecting(geom))) as geom FROM footprints;
recibí el siguiente error:[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;
ST_ClusterIntersecting
. Gracias por señalarlo, lo arreglaré.