Vielen Dank! Das ist es!
Am 07.06.19 um 20:21 schrieb Felix Kunde:
Hi Claas, Klingt nach einem guten Anwendungsfall für ST_ClusterIntersecting (https://postgis.net/docs/ST_ClusterIntersecting.html) PostGIS erstellt dabei ein Array von GeometryCollections, wobei sich die berührenden Linien dann in einer GeometryCollections befinden. Mit unnest entpacke ich das Array und wandle die Collections mit ST_CollectionHomogenize in MULTILINESTRINGS oder LINESTRINGS um. Sollen es nur MULTILINESTRINGS sein, dann ST_CollectionExtract (https://postgis.net/docs/ST_CollectionExtract.html) Ein Beispiel: WITH trassen(id, geom, typ) AS ( VALUES (1, 'LINESTRING(1 1,3 1)'::geometry, 'typA'), (2, 'LINESTRING(2 1,2 2)'::geometry, 'typA'), (3, 'LINESTRING(3 2,4 2)'::geometry, 'typA'), (4, 'LINESTRING(3 1,3 2)'::geometry, 'typB'), (5, 'LINESTRING(3 2,3 3)'::geometry, 'typB') ) SELECT typ, ST_AsText(ST_CollectionHomogenize(unnest(ST_ClusterIntersecting(geom)))) FROM trassen GROUP BY typ; Bei 800 Objekten sollte es, denke ich, noch keine Probleme mit der Arraygröße geben. Ich glaube, ab PostGIS 3.0 soll es diese Aggregatfunktion(en) auch als Window Functions geben. Das dürfte noch schneller funktionieren. Hoffe das hilft dir weiter. Viele Grüße und schönes WE Felix Gesendet: Freitag, 07. Juni 2019 um 11:45 Uhr Von: "Claas Leiner" <claas.lei...@gkg-kassel.de> An: Fossgis-talk-liste <Fossgis-talk-liste@fossgis.de> Betreff: [FOSSGIS-Talk] PostGIS Multipart to Singlepart Hallo Zusammen, folgendes Problem bei einer PostGis-Abfrage sieht einfach aus, aber es scheint nicht so einfach zu sein: Ein Linienlayer mit ca. 800 Objekten soll nach einem Attribut "typ" verschmolzen werden. Am Ende sollen jedoch nicht zusammenhängende Linienteile des gleichen Typs als eigene Objekte erscheinen. Ziel ist ein Singlepart-Layer, bei dem nur zusammenhängende Linienobjekte des gleichen Typs verschmolzen sind. Schritt 1: -- Nach dem Attribut typ verschmelzen create table trassen_zus as select st_Union(geometry)::geometry('Multilinestring',25832) as geometry, typ from trassen group by typ ; Jetzt habe ich für jeden Typ ein Multlinestring-Objekt. Es gibt so viele Objekt wie Typen (8). Die Multi-Objekte verfügen jedoch über Teil-Linien die im Gebiet verstreut sind. Jedes Teilobjekt, welches nicht mit einem anderen zusamenhängt, soll nun ein einzelne Objekt werden. Also Multipart zu Singelepart. Schritt 2 Mit create table trassen_zus_diff as select (ST_Dum(geometry)).geom::geometry('Linestring',25832) as geometry, typ from trassen ; Bekomme ich jedoch die Ausgangsgeometrie zurück. Ich möchte aber für jeden seperat liegenden Linienabschnitt mit identischem Typ eine Singlepart-Geometrie bekommen. Hat jemand mit dieser Problemstellung Erfahrungen und kann mir einen Tip geben? Viele Grüße, Claas -- .................................................................... OSGeo Park & OSGeo Day auf der AGIT 2019 in Salzburg 3.-5. Juli 2019, Universität Salzburg https://agit.at FOSSGIS Veranstaltungen 2019 https://www.fossgis.de/node/322[https://www.fossgis.de/node/322] FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem GIS-Bereich und Freier Geodaten! https://www.fossgis.de/[https://www.fossgis.de/] https://twitter.com/fossgis_eV ____________________________________________________________________ FOSSGIS-Talk-Liste mailing list FOSSGIS-Talk-Liste@fossgis.de https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste[https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste]
-- ----------------------------------------- GKG-Kassel - Dr.-Ing. Claas Leiner QGIS-Support und mehr Geodatenservice, Kartenwerkstatt & GIS-Schule Kassel Wilhelmshöher Allee 304 E 34131 Kassel Tel. 0561/56013445 claas.lei...@gkg-kassel.de ---------------------------------------- http://www.gkg-kassel.de ---------------------------------------- Unterstützen Sie QGIS QGIS-DE e.V. | http://qgis.de QGIS Projekt | http://qgis.org/de/site/ -- .................................................................... OSGeo Park & OSGeo Day auf der AGIT 2019 in Salzburg 3.-5. Juli 2019, Universität Salzburg https://agit.at FOSSGIS Veranstaltungen 2019 https://www.fossgis.de/node/322 FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem GIS-Bereich und Freier Geodaten! https://www.fossgis.de/ https://twitter.com/fossgis_eV ____________________________________________________________________ FOSSGIS-Talk-Liste mailing list FOSSGIS-Talk-Liste@fossgis.de https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste