Ich versuche, eine Auflösungsoperation in PostGIS mit dem Befehl ST_Union auszuführen.
Die Eingabeebene ist zugegebenermaßen ziemlich groß und komplex. Mit "groß" meine ich 57.771 Merkmale mit einer Anzahl von Scheitelpunkten zwischen 4 und 758.018 pro Merkmal, was einem Durchschnitt von 86 Scheitelpunkten pro Merkmal entspricht. Nur etwa 10 der Features haben> 10.000 Eckpunkte. Mit "komplex" meine ich, dass die Polygone viele Löcher, unordentliche Überlappungen, Inseln usw. haben und dass die großen Polygone dazu neigen, einen Begrenzungsrahmen zu haben, der viele der kleineren Polygone abdeckt, was möglicherweise weniger nützliche Renderindizes darstellt.
Das Problem ist, dass die Abfrage so langsam ist, dass sie unbrauchbar wird. Ich las Paul 2009 Post hier , die mich führen zu glauben , dass meine Frage immer noch ziemlich schnell sein sollte. Ich benutze den folgenden Befehl; mache ich etwas offensichtlich Falsches oder Ineffizientes?
SELECT ST_Union(f.geom) as geom, column1,column2,column3
FROM "inputlayer" As f
GROUP BY column1,column2,column3
Edit: Ich benutze:
POSTGIS="2.1.4 r12966" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.7.1, 23 September 2009" GDAL="GDAL 2.0.0dev, released 2014/04/16" LIBXML="2.7.8" LIBJSON="UNKNOWN" TOPOLOGY RASTER PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
Die Maschine, auf der ich den Datenbankserver ausführe, ist eine virtuelle Maschine ohne viel Strom. Ich werde die SET work_mem = 50000 Idee ausprobieren und sehen, wie die Dinge laufen!