Was ich brauche, ist, sich überschneidende Polygone in einer einzigen Geometrie zu vereinen und andere unverändert zu lassen.
Ich kann dies mit der folgenden Abfrage tun, bei der alle Polygone zu einer einzigen Geometrie zusammengefasst und dann auf die separaten Geometrien übertragen werden.
INSERT INTO unioned(geom)
SELECT ST_MULTI((ST_Dump(ST_Union(geom))).geom) from footprints;
Das Problem ist, dass ich mehr als eine Million Zeilen in einer Datenbank habe und der ST_Union
Vorgang nie endet. Gibt es eine Möglichkeit, dasselbe zu erreichen, ohne alle Geometrien zu verbinden?
ST_ClusterIntersecting
Geometrie mit SRID = 0 zurückgegeben wird? Wie könnte das gelöst werden? Beim Versuch, die folgende Abfrage auszuführen:INSERT INTO fixed_footprints(geom) SELECT ST_UnaryUnion(unnest(ST_ClusterIntersecting(geom))) as geom FROM footprints;
Ich habe den folgenden Fehler erhalten:[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;
werde es an einem größeren SetST_ClusterIntersecting
. Vielen Dank für den Hinweis, ich werde es reparieren lassen.