Okay, das mit den ST_touches oder ST_disjoint ist an sich eine brauchbare
Methode. Denn damit würde ich alle Teile rausbekommen.Nun geht es mir darum,
koordinatenmäßig die Mitte der Straße zu finden. Ich kann dafür die Funktion
ST_line_interpolate_point verwenden, sofern ich einen Linestring habe.  Aber
einige Straßen haben ja auch sogenannte T-Verbindungen. Und genau diese sind
mein Problem.
Ein Beispiel zur Verdeutlichung:

----------------°---------------°----------------
................|
................|
................|

Anmerkung: der horizontale Weg soll ein ganz langer Weg sein. Der vertikale
ist nur ein kleiner gleichbenannter Nebenweg.

Der vertikale Strich repräsentiert einen Weg, der zur horizontalen Straße
gehört (sie haben denselben Namen und sind an diesem Punkt verbunden
st_touches =false), aber bei meiner Mittelpunktberechnung unbeachtet bleiben
soll. D.h. er soll nicht mit in den Linestring. Die restlichen
(Multilinestrings) werden in Linestrings umgewandelt und zusammen
verschmolzen,sodass es eine einzige Straße mit allen Punkten wird. So kann
ich dann sehr einfach die Mitte bestimmen und mir die Koordinaten
zurückliefern lassen.
Wie könnte man dieses Problem lösen? Node-IDs oder Linien-IDs helfen hier
auch nur wenig weiter, da sie in der Datenbank nicht fortwährend nummeriert
sind.

In der Osmosis Datenbankstruktur sieht es da schon etwas anders aus
(einfacher und vorteilhafter), denn hier bestehen bereits Linestrings, die
größtenteils den gesamten Weg wiedergeben (fast alle Segmente sind schon
miteinander verschmolzen). Doch auch hier gibt es einige
auseinandergerissene Straßen, bspw. eine Einbahnstraße, die aus drei Teilen
bestehen- ebenfalls mit T-Verbindung, die ich gerne rauslöschen würde.
Eine T-Verbindung in der Art
----------°--------°------
..|
..|

ist kein Problem, da die Vertikale nur mit einem Straßensegment verbunden
ist. Hier kann man einfach fragen, ob die Anfangskoordinaten der Vertikalen
gleich Anfangs- oder Endpunkt der Horizontalen ist, wenn nein, dann ists
klar, dass sie eine T-Straße ist. Somit wird sie nicht Bestandteil des
Linestrings. Doch sobald dieser Weg mit zwei horizontalen Teilstücken
verbunden ist, wird es wieder schwieriger diese Vertikale zu entfernen...


Also die Frage: Wie erkenne ich auf vernünftige Art und Weise solche
"kleinen Nebenwege" ?

Mfg
Mehmet

Am 22. September 2009 20:55 schrieb Tobias Wendorff <
tobias.wendo...@uni-dortmund.de>:

> Darum such' doch einfach aneinanderhängende Stücke. Sie müssen ja
> die gleichen Nodes haben. Notfalls mit ST_Touches().
>
> Wieso nimmst Du eigentlich osm2pgrouting dafür und nicht osmosis?
> Dank Florians Hilfe habe ich sehr gute Ergebnisse damit erzielen
> können.
>
>
>
> Mehmet Sirin schrieb:
> > Hey,
> > das mit der Suche an den Enden ist eine gute Idee!
> > Ja die Boundaries bzw. Polygone wollen wir benutzen, um zwei
> > gleichbenannte Wege aus zwei unterschiedlichen Gebieten zu
> > uinterscheiden. Aber zur Unterscheidung in ein und derselben Stadt,
> > nützt uns das nur wenig..
> >
> >
> >
> > MfG
> > Mehmet
> >
> > Am 22. September 2009 20:45 schrieb Tobias Wendorff
> > <tobias.wendo...@uni-dortmund.de <mailto:tobias.wendo...@uni-dortmund.de
> >>:
> >
> >     Hallo,
> >
> >     Mehmet Sirin schrieb:
> >      > Wenn es nun in der Stadt zwei Straßen mit denselben Namen gibt,
> >     ist es
> >      > nur schwer zu unterscheiden, welche Teile eindeutig zu welche
> dieser
> >      > Straßen gehören.
> >
> >     ich suche immer nach Stücken mit gleichem Namen. Wenn es dann
> irgendwann
> >     nicht mehr zusammenhängt, schaue ich am Ende noch 200 Meter um den
> >     Endpunkt herum, ob die Straße vielleicht irgendwo weitergeht, wenn
> >     nicht, war's das.
> >
> >     Sinnvoll ist vielleicht vorher, Flächen aus den Admin-Boundaries
> >     zu erzeugen und diese dann nachher als Grenze zwischen den fertigen
> >     Linestrings zu wählen.
> >
> >     HTH
> >     Tobias
> >
> >     _______________________________________________
> >     Talk-de mailing list
> >     Talk-de@openstreetmap.org <mailto:Talk-de@openstreetmap.org>
> >     http://lists.openstreetmap.org/listinfo/talk-de
> >
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Talk-de mailing list
> > Talk-de@openstreetmap.org
> > http://lists.openstreetmap.org/listinfo/talk-de
>
> _______________________________________________
> Talk-de mailing list
> Talk-de@openstreetmap.org
> http://lists.openstreetmap.org/listinfo/talk-de
>
_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an