Ich kann mir aktuell unter einem LINESTRING erst einmal nichts vorstellen.
Wie wäre es mit ein paar Beispielen?
Hallo!
Kann man per SQL einen LINSTRING immer an dem Knoten splitten, an dem er von einem anderen gekreuzt wird oder wo ein Anderer endet? Hintergrund ist folgender:
Ich habe Straßen als LINESTRING's in einer Tabelle. Darüber möchte ich mit pgrouting Routen berechnen lassen. Leider funktioniert das nicht, wenn an einer Kreuzung die Linien nicht enden, sondern nur "andocken". Man stelle sich das z.B. wir das "T" vor. Der Querstrich oben ist ein LINESTRING aus 3 Punkten und der senkrechte Strich endet auf dem mittleren Schnittpunkt vom Querstrich. Ergebnis soll sein, dass der Querstrich in der Mitte geteilt wird.
Bei über 400 LINESTRING ist eine manuelle Korrektur zu aufwendig. Zumal man auch die prüfen muss, die passend enden. Weiterhin kommt es vor, dass immer wieder solche "falschen" LINESTRING's neu in der DB landen.
Bin dankbar für jeden Hinweis.
stargaizer
Ich kann mir aktuell unter einem LINESTRING erst einmal nichts vorstellen.
Wie wäre es mit ein paar Beispielen?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Hallo Andreas,
hier ein Beispiel, welches das von mir genannte "T" darstellt:
Oder falls du folgende beiden Queries z.B. im OpenJUMP laufen läßt, bekommste es schön hingemalt:Code:LINESTRING(5 0, 5 10) LINESTRING(0 10, 5 10, 10 10)
Es geht darum, dass sich die beiden Linien im Punkt (5 10) schneiden. Das Ergebnis soll dann ausCode:SELECT ST_AsBinary(ST_GeometryFromText('LINESTRING(5 0, 5 10)')) AS geometry; SELECT ST_AsBinary(ST_GeometryFromText('LINESTRING(0 10, 5 10, 10 10)')) AS geometry;
machen.Code:LINESTRING(0 10, 5 10, 10 10)[/QUOTE]ein[QUOTE]LINESTRING(0 10, 5 10) LINESTRING(5 10, 10 10)
Ich hoffe das bringt etwas licht ins Dunkel.
ST_Intersection(the_geom1, the_geom2) dürfte sein was du suchst.
Gruß Uwe
Have a lot of fun!
Hallo Uwe!
Eine Intersection ist schon klar, aber nicht das was mich der Lösung meines Problems näher bringt. Bei den beiden von mir als Beispiel genannten Geometrien bekomme ich den Schnittpunkt zurück. Ich müsste aber an dem Punkt die Linie in zwei Linien aufteilen. Nächstes Problem ist, dass ich den gesamten Datenbestand, also die ca. 400 Sätze in der Tabelle darauf hin prüfen und ggf. aufteilen müsste.
Matthias
Ein Union der Geometrien sollte die Schnittpunkte auflösen. also irgendwie sowas:
Ohne Kaffee und GewährCode:select st_union(t1.the_geom, t2.the_geom) from tabelle t1, tabelle t2 where st_intersects(t1.the_geom, t2.the_geom)
Gruß uwe
Have a lot of fun!
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen