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

Antwort per Email an