Ergebnis 1 bis 6 von 6

Thema: LINESTRING's an den Kreuzungen splitten

  1. #1
    stargaizer ist offline Neuer Benutzer
    Registriert seit
    08.04.2008
    Beiträge
    19

    Standard LINESTRING's an den Kreuzungen splitten

    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

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    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

  3. #3
    stargaizer ist offline Neuer Benutzer
    Registriert seit
    08.04.2008
    Beiträge
    19

    Standard

    Hallo Andreas,
    hier ein Beispiel, welches das von mir genannte "T" darstellt:
    Code:
    LINESTRING(5 0, 5 10)
    LINESTRING(0 10, 5 10, 10 10)
    Oder falls du folgende beiden Queries z.B. im OpenJUMP laufen läßt, bekommste es schön hingemalt:
    Code:
    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;
    Es geht darum, dass sich die beiden Linien im Punkt (5 10) schneiden. Das Ergebnis soll dann aus
    Code:
    LINESTRING(0 10, 5 10, 10 10)[/QUOTE]ein[QUOTE]LINESTRING(0 10, 5 10)
    LINESTRING(5 10, 10 10)
    machen.

    Ich hoffe das bringt etwas licht ins Dunkel.

  4. #4
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    794

    Standard

    ST_Intersection(the_geom1, the_geom2) dürfte sein was du suchst.

    Gruß Uwe
    Have a lot of fun!

  5. #5
    stargaizer ist offline Neuer Benutzer
    Registriert seit
    08.04.2008
    Beiträge
    19

    Standard

    Hallo Uwe!
    Zitat Zitat von Gisman Beitrag anzeigen
    ST_Intersection(the_geom1, the_geom2) dürfte sein was du suchst.
    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

  6. #6
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    794

    Standard

    Ein Union der Geometrien sollte die Schnittpunkte auflösen. also irgendwie sowas:

    Code:
    select st_union(t1.the_geom, t2.the_geom)
      from tabelle t1, tabelle t2
      where st_intersects(t1.the_geom, t2.the_geom)
    Ohne Kaffee und Gewähr

    Gruß uwe
    Have a lot of fun!

Ähnliche Themen

  1. Problem Lines aus Linestring
    Von martin083 im Forum PostGIS
    Antworten: 1
    Letzter Beitrag: 09.03.2012, 18:26
  2. Linestring aus Punkten erstellen
    Von josias im Forum PostGIS
    Antworten: 1
    Letzter Beitrag: 03.05.2010, 13:21
  3. Problem Linien auftrennen/splitten
    Von marcm im Forum Trigger und Funktionen
    Antworten: 4
    Letzter Beitrag: 17.06.2009, 12:30
  4. Multilinestring splitten
    Von Nuadu im Forum PostGIS
    Antworten: 3
    Letzter Beitrag: 28.03.2009, 19:48
  5. Suche Punkt in Linestring oder Polygon
    Von Wolf im Forum PostGIS
    Antworten: 3
    Letzter Beitrag: 24.11.2008, 13:23

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum