[FOSSGIS-Talk] PostGIS Multipart to Singlepart
Claas Leiner
claas.leiner at gkg-kassel.de
Fr Jun 7 22:27:45 CEST 2019
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.leiner at gkg-kassel.de>
> An: Fossgis-talk-liste <Fossgis-talk-liste at 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 at 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.leiner at 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/
Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste