[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