Zerteilen von Linienelementen an Kreuzungspunkten?

Hallo,
ich habe mir Daten von OSM, bezüglich Wanderwegen, in eine PostGIS DB geholt und nun festgestellt, dass die Daten einfach nur fürchterlich sind, da sie von Laien ins System gebracht wurden.
Wege-Objekte sind teilweise 10km und länger, was nicht sinnvoll für meine Idee ist, eine Webapp zu erstellen, in welcher sehr flexibel Wege durch Nutzer einzuschätzen sind.
Die Daten sehen leider so aus: https://photos.app.goo.gl/9EiSZs2Rjrqqayfp6

Ich möchte nun die Wege an jedem Zusammentreffen von Wegen (Kreuzung und Endpunkt Situation möglich) trennen, sodass kürzere Wegeobjekte entstehen.
Leider habe ich nicht den leisesten Ansatz, da ich Geometrien sonst nur als Ganzes (als Box oder Center) betrachtet habe und noch nie in solche Verschneidungsoperationen geschnuppert habe.

Es müsste ja ebenfalls die alte Geometrie jedes mal auch gelöscht und in zwei neue geteilt neu eingefügt werden. Vielleicht jede Geometrie einzeln prüfen lassen, auf mögl. Knoten testen und getrennt oder ungetrennt (je nach Fall) in einer neuen Tabelle ablegen? … nur wie?

Was meint ihr, welcher Weg würde hier einen Sinn ergeben?

Oder gibt es vielleicht schon einen besseren Datensatz? Ich kann mir nicht vorstellen, wie Fußgängernavis damit arbeiten sollen, aber es gibt sie ja, auf Basis von OSM.

Grüße in die Runde! :slight_smile:

Hallo!
Das hier sollte tun was du brauchst:
https://postgis.net/docs/ST_Split.html
Viele Grüße Uwe

Oh, das sieht gut aus, danke! :slight_smile:

Ach, seit V2 von PostGIS gibts das, alles klar. Ich war schon ne Weile raus aus Geodatenberechnungen.

Hier mein Statement, welches ich abgeschickt habe:

CREATE TABLE split_line_point AS
SELECT osm_id,ST_Split(mline.way, pt.geom)
FROM planet_osm_line As mline, schnittpunkte As pt

Hoffe es dauert keine Woche … :smiley:

Wenn ich hier einen Denkfehler gemacht habe, korrigiert mich gern! :smiley:
Die Wege der DB sind unergründlich … :wink:

Danach dann die IDs aus der entstandenen Tabelle aus der org. Tabelle löschen und zusammenführen. Ich hoffe nur, da kommt jetzt kein Murks raus… :smiley:

Ich würde noch anfügen:

where st_intersects(mline.way, pt.geom)

Damit werden nur die geprüft, die sich auch schneiden.

Grüße Uwe

Ah, gute Idee!
Ich hatte das ohne das losgelassen, aber das ging natürlich schief. Ich hatte vermutet, dass dies die Funktion schon beinhaltet, da diese ansonsten ja auch keinerlei Sinn ergibt, aber da hatte ich zu viel erwartet.
Hab damit meine DB geschrottet und muss die demnächst mal wieder neu aufsetzen und testen.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.