Ce dont j'ai besoin, c'est d'unir les polygones qui se croisent dans une seule géométrie et d'en laisser d'autres sans changement.
Je suis capable de le faire en utilisant la requête suivante, qui unit tous les polygones en une seule géométrie, puis les vide sur des polygones séparés.
INSERT INTO unioned(geom)
SELECT ST_MULTI((ST_Dump(ST_Union(geom))).geom) from footprints;
Le problème est que j'ai plus d'un million de lignes dans une base de données et que l' ST_Union
opération ne se termine jamais. Existe-t-il un moyen d'y parvenir sans rejoindre toutes les géométries?
ST_ClusterIntersecting
renvoie la géométrie avec SRID = 0? Comment cela pourrait-il être résolu? Tentative d'exécution de la requête suivante:INSERT INTO fixed_footprints(geom) SELECT ST_UnaryUnion(unnest(ST_ClusterIntersecting(geom))) as geom FROM footprints;
J'ai eu l'erreur suivante:[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;
Je vais essayer ça sur un plus grand plateauST_ClusterIntersecting
. Merci de l'avoir signalé, je vais le réparer.