Überarbeitung von TMC / TPEG

Sagen wir es mal so. Aus Nutzersicht waere es natuerlich toll, wenn ich jederzeit aktuelle Strassendaten mit durchgaengigen, korrekten TMC-Informationen bekommen koennte - so dass ich ohne komplizierte Logik eine Anfrage wie “ich hab hier eine Staumeldung fuer Segmente A,B,C, welche OSM-Ways sind betroffen” stellen kann und richtige und vollstaendige Antworten bekomme. Das waere fuer mich als Nutzer das beste.

(Selbst in dieser perfekten Welt waere vieles nicht trivial - wenn zum Beispiel ein Meldungstyp “Fahrbahnverengung” den TMC-Code eines Rastplatzes betrifft, dann sind damit andere Asphaltflaechen gemeint als wenn fuer den identischen TMC-Code ein “Rastplatz gesperrt”-Meldungstyp rausgeht - der gleiche TMC-Code betrifft mal die Autobahn, die am Rastplatz vorbeifuehrt, und mal die highway=services-Flaeche, die neben der Autobahn liegt. Aber das nur am Rande!)

Aber diese aus Nutzersicht tolle Welt werden wir nie hinkriegen, wir werden auch mit manueller Instandhaltung nie 100% erreichen, und es wird auch immer wieder passieren, dass irgendwas bei uns nicht fehlt, sondern schlicht falsch ist - weil ein Weg gesplittet und eine Relation nicht kopiert wurde, was auch immer, die meisten hier kennen das ja zur Genuege.

Selbst wenn bei uns alles ok ist, so kaemen doch neue Listen von der BASt, an die wir unsere Daten regelmaessig anpassen muessten (und das, obwohl sich in der realen Welt gar nichts aendert - auch komisch, oder).

Das heisst, dass ernsthafte Nutzer sich eh nie 100% auf OSM verlassen koennen, sondern die OSM-Infos mit geeigneten Routing-Algorithmen ueberpruefen muessen.

Wir koennten also maximal etwas liefern, was ein bisschen besser ist als das, was man sich selber ausrechnen kann. Im Unterschied zu dem, was man sich selber ausrechnen kann, wuerde unseres aber staendig mit Arbeitszeit “nachgefuettert” werden muessen. Und es wuerde die Arbeit unbeteiligter Mapper an anderen Dingen beeintraechtigen (weil die sich damit auseinandersetzen muessten, was das seltsame TMC-Tag da jetzt soll).

Unterm Strich, wenn man den moeglichen Nutzen auf die eine Waagschale legt und den Aufwand und die stoerenden Seiten auf die andere, scheinen mir die negativen Seiten zu ueberwiegen.

Bye
Frederik

Wo ist OSM denn je zu 100% fertig/aktuell? Es wird immer etwas geben was wir zwar erfassen können aber nicht vollständig erfasst ist bzw. nicht mehr aktuell ist.

Man braucht sich nur einmal die Postleitzahlen anschauen. Diese erfüllen dann auch den Tatbestand der Änderung ohne das sich etwas in der realen Welt ändert.

Dies würde ziemlich vieles in OSM in Frage stellen. Sei es bei Adressen die angabe des landes der Plz oder ähnliches.

Ähnliches gilt für die Routen des ÖPNV. Auch Relationen von Straßen könnte man sich sparen, da diese ebenfalls aus externen Quellen mehr oder weniger genau über unser Netz gelegt werden können.

Die Frage ob man andere Nutzer damit behindert möchte ich grundsätzlich anzweifeln. Aber man läuft natürlich Gefahr, dass Nutzer die das nicht verstehen es weder pflegen noch darauf Rücksicht nehmen. Aber das gilt bei allen Datenstrukturen in OSM. Warum sonst gehen Grenzen und Küstenlinien immer wieder mal auseinander? Bestimmt nicht weil jemand da böse absichten hat.

Und das bestätigt meine Ansicht, daß wir uns mit TMC-Daten in OSM nicht rumärgern beschäftigen sollten.

tl;dr: Werden nicht gebraucht, sind permanent zu pflegen, “stören” → weg damit.

als Referenz “wie hängt das alles zusammen? Welche Straßen … gibt es?” allerdings prima zu verwenden.

Gruss
walter

Natürlich erwartet (hoffentlich) niemand, dass die Daten, die in OSM vorhanden sind, zu 100% perfekt wären. Wenn wir wirklich ein perfektes Mapping, oder meinetwegen auch nur ein perfektes Straßenrouting, als Ziel anstreben würden, könnten wir gleich sämtliche Straßendaten in die Tonne hauen, mit dem Argument, dass diese immer Fehler enthalten, weil sie manuell gemappt sind. Natürlich enthalten OSM-Daten Fehler, so wie jede andere Karte auch, aber es ist doch gerade die Stärke von OSM, dass diese Fehler von einer Community behoben werden können, sobald sie jemand entdeckt oder meldet, im Gegensatz zu kommerziellen Karten, wo der Nutzer auf ein Update hoffen und dafür bezahlen müsste.

So weit ich das bisher sehen kann, ändern sich bei einem solchen Update nicht auf einen Schlag alle Location Codes, sondern es gibt graduelle Änderungen. Die meisten Codes wären von einem Update also gar nicht betroffen. Man könnte genau so argumentieren, dass Verwaltungsgrenzen nicht in OSM gehören, weil es ja ständig Gemeindereformen gibt - und man da die Daten ändern muss, obwohl man in der realen Welt keinen Unterschied sieht.

Es geht ja auch gar nicht darum, sich zu 100% auf die Daten zu verlassen. Natürlich müssen die Daten überprüft werden. Es ist aber wesentlich einfacher, vorhandene Daten auf ihre Konsistenz und Richtigkeit hin zu überprüfen, als sie komplett auszurechnen.

Das ist doch aber genau das gleiche Problem wie z.B. bei Busrouten, wobei die sogar noch in größerer Zahl vorhanden sein dürften und sich dynamischer ändern. Natürlich kann ein Nutzer sich diese auch selbst von den ÖPNV-Unternehmen holen statt aus OSM und man würde so das Risiko vermeiden, dass ein Mapper eine Busroutenrelation zerschießt. Das hätte man aber auch keine OSM-ÖPNV-Karten. Deshalb sollte es natürlich das Ziel eines wie auch immer gestalteten Tagging sein, es so einfach wie nur möglich zu halten, damit auch Nutzer, die sich mit TMC nicht auskennen, damit keine Probleme bekommen.

Dazu kommt noch das IMHO beste Argument von viw: Wenn wir es schaffen sollten, TMC-Rohdaten von anderen Ländern zu erwerben mit der Möglichkeit sie “in nicht mehr roher Form” einzupflegen (meinetwegen über eine Spende oder was auch immer), könnten wir die aufgearbeiteten Daten als Teil der OSM-Karte auch FOSS-Routing-Projekten anbieten, die sich die Rohdaten selbst nicht leisten können. Als wenn das kein signifikanter Nutzen wäre…

Das Update lässt sich hervorragend automatisieren - >95% aller Punkte ändern sich nicht, die anderen Änderungen sind klein (neue Segmente, neue Punkte) und lassen sich in eine einfache ToDo-Liste umsetzen. Buslinien sind um Größenordnungen schwerer instandzuhalten, und da beschwert sich niemand, dass die nicht in OSM gehören würden!

Das trifft auf jedes beliebige andere Tag auch zu. Wie steht es mit den 3D-Attributen für Gebäude? Das ist ein noch viel größeres Gemenge an unterschiedlichen Dingen, und viele haben Werte die man ohne Nachschlagen nicht interpretieren kann.

Ja, insbesondere: Ein einmal vergebener Code wird auf keinen Fall neu an anderer Stelle vergeben! Alte Daten sind also höchstens ungenau, aber in keinem Fall komplett falsch.

Grundsätzlich gefällt mir, dass man auf diese Weise TMC-Locations in Form von OSM-Objekten abbilden kann, in diesem Fall also als eine Relation. Allerdings sehe ich das Schema etwas problematisch im Hinblick auf zukünftige Bearbeitungen an dieser Kreuzung. Angenommen, jemand teilt die B 521 und L 3209 gemäß einer baulichen Trennung in je zwei Wege auf*. Dann kommen zwei weitere Kreuzungspunkte hinzu. Jemand, der das TMC-Tagging nicht kennt, wird die aber nicht zur TMC-Relation hinzufügen, wie es eigentlich dem korrekten Tagging entsprechen würde. Vielleicht löscht er auch Punkte oder ersetzt sie. Damit würde so ein (ziemlich wahrscheinlicher) Edit das TMC-Tagging aus der Bahn werfen, z.B. weil man die TMC-Punkte dann nur noch auf einer von zwei Richtungsfahrbahnen findet und es so aussieht, als würde man sie in der anderen Richtung gar nicht passieren. So ein Fehler dürfte auch schwer automatisiert zu finden sein, denn wenn man nur prüft, ob eine TMC-Relation an der richtigen Stelle vorhanden ist, findet man ja eine solche - sie ist aber nicht vollständig.

*Nehmen wir mal hypothetisch an, die Kreuzung würde genau so umgebaut werden.

Also ich würde sagen so ein Locationcode ist keine einmalige Sache. Denn sonst würde man in Berlin beispielsweise ein Problem bekommen. http://www.openstreetmap.org/#map=18/52.56736/13.47575
Der Locationcode teilt die B2 in Höhe der Brücke und eigentlich auch gleichzeitig die Darßerstraße. Das kann aber kein gemeinsamer Punkt auf beiden Straßen sein.

Dann muss es in jede Richtung ein TMC Segment geben. Dies kann man sehrwohl automatisch validieren, indem man schaut ob die relation vom richtigen Start- zum Endpunkt geht und geschlossen ist.

Oder habe ich da etwas falsch verstanden?

Ja, völlig richtig. Genau deshalb hat diese Kreuzung / Straßenverbindung zwei TMC-Locations, einmal 21558 entlang der B 2 und einmal 26858 entlang der L 1193 / Darßer Straße. Jedem TMC-Punkt ist eindeutig eine Straße bzw. ein Straßensegment zugeordnet, und wenn sich zwei Straßen kreuzen, die beide TMC-Codes haben, dann hat deren Kreuzung (mindestens) zwei Location Codes. So auch im Beispiel von mueschel (wobei es dort ja sogar gemeinsame Punkte auf beiden Straßen gibt).

Ja, das sollte im Prinzip gehen. Das wäre ja letztlich das gleiche Vorgehen wie bei einer Busroute, einmal in Vorwärtsrichtung und einmal in Rückwärtsrichtung.

Apropos, in den TMC-LCLs hat jeder Punkt außerdem eine Information darüber, ob man die zugehörige Straße an dieser Stelle in positiver bzw. negativer Richtung befahren bzw. verlassen kann. Das kann man also durchaus auch validieren - führt eine Straße dorthin bzw. weg, die eine Verbindung zum nächsten Knoten darstellt?

Damit ziehe ich meinen Einwand aus dem letzten Post zurück, was eine automatische Validierung angeht. Allerdings würde ich das Tagging ein wenig modifizieren. Ich würde es so machen, dass beim kompletten Durchfahren einer TMC-Route jeder TMC-Punkt, der zu dieser Route gehört, genau einmal in Form eines Nodes auf der Strecke durchfahren wird. Beim Beispiel von mueschel werden beim Durchfahren der B 521 von Westen nach Norden aber zwei Nodes durchfahren, die Mitglied der gleichen TMC-Relation sind, wobei diese Relation Teil der TMC-Route auf der B 521 ist. Stattdessen würde ich lieber nur einen Node (in diesem Fall http://www.openstreetmap.org/node/32906938)) aufnehmen, da dieser immer durchfahren wird, egal in welcher Richtung. Wenn es an einer Kreuzung getrennte Richtungfahrbahnen gibt, braucht es dann genau zwei Nodes, einen pro Richtung, meinetwegen mit Rollen forward und backward o.ä. in der Relation, ähnlich wie z.B. bei Bushaltestellen.

Das ganze verstehe ich noch nicht. Was machst du denn bei einer richtungsgetrennten Fahrbahn welche von einer Landstraße ohne Trennung der Richtung gekreutz wird? Dann hast du auch zwei Knoten wegen der getrennten Straße. Aber durchfährst entweder zwei Punkte bei der nicht getrennten Straße oder es bleibt ein Stück frei.
Und was machst du wenn sich zwei Straßen mit getrennten Fahrbahnen treffen? Vielleicht sollte man das mal grafisch im Wiki verewigen.
Aber es sollte doch eigentlich über ein neues tagging nachgedacht werden statt das alte zu modifizieren?
Ich finde es schade das die Nutzer sich bisher nicht gemeldet haben. Insbesondere BR und SWR wären von Vorteil.

Also, wie oben beschrieben gehört zu einer TMC-Punkt-Location immer eindeutig eine TMC-Route. Nehmen wir an, in diesem Beispiel sind beide kreuzenden Straßen A (getrennt) und B (nicht getrennt) TMC-Routen. Dann hat die Kreuzung zwei verschiedene Location Codes, 1 mit Referenz auf A und 2 mit Referenz auf B.

In diesem Fall würde ich es dann so machen, dass ich 1 auf die beiden Kreuzungsnodes tagge. Wenn ich nun entlang von Straße A fahre, durchfahre ich immer genau einen dieser beiden Knoten. Was beim Durchfahren von Straße B und diesen beiden Nodes passiert, ist egal, da 1 nicht zu B gehört. Dagegen würde ich 2 auf einem Node in der Mitte der Kreuzung taggen, zwischen den beiden Kreuzungsnodes. Dieser Node wird dann genau einmal durchfahren, wenn man Straße B entlang fährt. Auch hier ist wieder egal, was beim Durchfahren von Straße A passiert, weil 2 nicht zu A gehört.

Auf diese Weise kann man die beiden Fahrbahnen von A jeweils so in zwei Teilstücke unterteilen, dass jeweils eines davon auf jeder Seite von Location 1 liegt. Ebenso kann man Straße B nun an Location 2 in zwei Teile aufteilen.

In dem Fall würde ich die Nodes immer genau zwischen zwei Kreuzungsnodes setzen. Location 1 wäre also an Nodes auf den beiden Richtungsfahrbahnen von A, die zwischen den beiden Richtungsfahrbahnen von B liegen.

Ja, gute Idee, ich werde das mal versuchen zu zeichnen.

Das denke ich auch. Das war auch nur eine Überlegung, mit welchen OSM-Objekten man generell eine TMC-Location assoziieren könnte. Ob man das nun besser als Relation taggt oder mittels eines TMC-Schlüssel an diesen Punkten wie im Proposal im Wiki ist eine andere Frage, da bin ich mir selbst noch nicht ganz sicher. Aber auf jeden Fall sollten die Tags, egal ob an Relation oder Node, einfacher sein als dieses cid_X:tabcd_Y-Gewirr, das kein Mensch versteht. tmc:point=, tmc:road=, tms:segment=* würde ich eher im Sinn haben.

Sehe ich auch so, gerade von denen wäre es doch gut zu wissen, was gewünscht ist. Insofern kann ich zumindest als Navit-Entwickler und damit hoffentlich zukünftiger Nutzer ein wenig die Perspektive der Router einbringen.

Von der Sache her dürfte es abfragetechnisch (für Anwendungen, die TMC-Daten aus OSM verarbeiten) für TMC egal sein, ob die Relation type=road oder type=TMC ist. Da so oder so beides ausgewertet werden muß.

Ist die Master-Relation type=road und die Slave-Relation type=TMC wird entweder erst “type=road” ausgewertet um auf das das “type=TMC” - Segment zu kommen, oder beides wird eh gleichzeitig ausgewertet. Die für die Auswertung relevante Information hier steckt in dem Tag des LCL-Codes, der für den betreffenden Straßenabschitt in einer Relation mit type=TMC steckt.

Betrachtet man eine Master-Reation “type=road” mit den Slave-Relationen “type=TMC” so steckt der für die TMC-Meldung auszuwertende LCL-Code in der Slave-Relation type=TMC. Im LCL-Code in der Master-Relation steckt nur die gesamte betreffende Straße drin. Bei TMC-Master-Slave-Relationen hat man immer mehrere LCL-Codes: der erste für die gesamte Straße, der zweite für das jeweilige Segment. Hinzu kommen die LCK-Codes der Knotenpunkte.
Beachten muß man dabei auch, daß nicht zwingend eine Straße immer in Segmenten geteilt ist. In der o.g. Liste sind eine Reihe von Straßen drin, die nicht segmentiert sind, also nur einen LCL-Code haben (dann zuzüglich zweier Punkte: Start und Ende).

In der Auswertung braucht sowieso lediglich nur der LCL-Code abgefragt zu werden. Je nachdem, welche Nummer man hat, landet man am Startpunkt der Straße, am Code des Gesamtverlaufes der Straße, an einem ihrer Abschnitte oder einem ihrer Zwischenpunkte oder sonstwo…

Ich betrachte daher die saubere Trennung zwischen Straßen- und TMC- Relationen als unproblematisch, im Gegenteil, die dann entstehenden TMC-Relationen erfahren eine Überarbeitung, zu mindestens in Hinblick der Vollständigkeit der Elemente.

Sven

Überlegt hatte ich das, aber in komplexen Situationen sehe ich das als nicht ganz so brauchbar an. Ich denke aber, dass es kein Problem ist Knoten an einer komplexen Kreuzung “großzügig” mit in die TMC-Relation aufzunehmen, auch wenn dann mehrere Knoten befahren werden. TMC-Abschnitte von einem Knoten zum anderen sollten dann immer von letzten erreichten Knoten bei A zum ersten erreichten Knoten bei B gehen. Man sollte allerdings wohl noch den Übergang von einem Segment auf ein kreuzendes im Auge behalten - dafür müsste auch ein Knoten der Abbiegespur an “meiner” Kreuzung noch mit aufgenommen werden.

Das

Das kann man durchaus machen, die Auswertung sollte auf jeden Fall kein Problem sein. Die Problematik sehe ich eher darin, so ein Tagging zu validieren, wenn jemand die Kreuzung bearbeitet hat. Woran erkennt man, dass alle aufzunehmenden Nodes in der Relation enthalten sind? Wenn es immer genau einen bzw. einen pro Richtung gibt, ist das eindeutig.

Aber du hast Recht, bei komplexeren Kreuzungen stellt sich natürlich die Frage, wo denn dieser eine Knoten sein soll. Genau so bei Autobahnausfahrten - bei der Ausfahrt, der Einfahrt oder dazwischen?

TPEG ist nur ein Container, es kommt darauf an was man hineinpackt. In TPEG kann man auch TMC Loc-Referenzierungen angeben. Das tut man auch gerne weil diese schön kurz sind und alle Navis TMC verstehen. Siehe TPEG-TEC
Im übrigen steht im TPEG exakt das drinn was auch in TMC drinn steht, was sonst?

Nein. TPEG ist ein Container wo man im Header sagen kann was kommt. So hat man für die ÖPNV ein Container gemacht, der allerdings gefüllt werden soll. Ganze Fahrpläne zu broadcasten wäre hirnrissig, es reicht die Verspätungen und aktuelle An- und Abfahrten in 20-30 Minuten Umkreis. Idee dabei war die Locationlisten zu verbinden - also Parkhaus zu Bahnsteig, und so den Reisenden durchzunavigieren.

Ich habe mal die frei verfügbaren Location Code Tabellen von Deutschland, Italien, Schweden und Norwegen in eine Datenbank geladen und ein paar Abfragen dazu erstellt. Das ganze ist sicher weder perfekt noch komplett, aber zumindest die Straßen werden schon einmal auf Wunsch angezeigt, zusammen mit den dazugehörigen Wegpunkten. Hier ist die Startseite:

http://manuelhohmann.dyndns.org/osm/TMC.html

Die Daten gibt es als einfache Kartenansicht oder auch gleich zum Download als GPX. Wenn jemand einen Fehler finden sollte oder etwas nicht funktioniert, oder sich jemand ein Feature wünscht, einfach bei mir melden, dann schaue ich, was ich machen kann.

Na dann wollen wir mal Wünsche wünschen. Wie wäre es das ganze als WMS zur Einbindung in JOSM?

Also ich könnte mir vorstellen in meinem Bereich wenigstens die Locationcodes anzulegen. Dann sollten wir aber noch darüber sprechen nach welchem Schema das am besten geschehen sollte.

erst mal Danke für die Arbeit.

Wir sollten aber bei den Daten durchaus vorsichtig sein.

Ich hab mit mal die B 87 angeschaut. Die wird im TMC an einigen Stellen noch auf ihrer Altstrecke geführt: z.B. zwischen Lützen und Weißenfels. Die TMC-Daten gehen hier über einen Abschnitt, der offensichtlich schon als Landesstraße heruntergestuft wurde, nur im TMC noch nicht. Auch in Thüringen gibt es an zwei Stellen solche Diskrepanzen.

stellt Sven fest

Puh, das klingt nach “viel” Arbeit - wenn ich das richtig sehe, müsste ich dafür Tiles rendern und einen Tileserver aufsetzen… Das geht derzeit ein wenig über meine Fähigkeiten, da müsste ich mich erst einmal einarbeiten, und das kann eine Weile dauern. Für die Arbeit mit JOSM habe ich die GPX-Dateien gebastelt, aber du hast natürlich Recht, da sieht man so zunächst nur eine Straße und nicht, was sonst noch so vorhanden ist. Ich werde mal versuchen, größere Daten nach Land / Bundesland zu bauen, damit man mehr Übersicht hat.

Sehe ich auch so. Ich werde mal Skizzen zu dem obigen Taggingvorschlägen basteln.

Ja, sehe ich auch so. Das ist mir bei der B 5 auch aufgefallen. Allerdings frage ich mich, wenn das die Version 12.0 ist und derzeit auch von den TMC-Sendern Version 12.0 ausgestrahlt wird, ob die Meldungen sich dann tatsächlich auf den alten Streckenverlauf beziehen. IMHO müssten sie das, da es ja keine neuere Location Code Tabelle gibt, in der der neue Verlauf eingetragen ist.

Nein Tiles muss man dafür gerade nicht rendern. Das muss man nur wenn man einen TMS anbieten möchte.
Ich weiß ja nicht was du im Hintergrund zu laufen hast:
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Mapserver
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Geoserver
Bei beiden Servern kann man eine Postgisdatenbank als Layer einbinden. Auch Shapefiles sind kein Problem.

Das Problem mit den GPX Daten ist, dass ich die betreffenden Orts-Straßen nicht finden konnte:
http://osm-tmc.infoware.de/tmc/?view=tmc&lon=13.45273&lat=52.56054&zoom=14&overlays=tmc_points,ways_with_tmc_tags_ok,link_ways_with_too_many_ends,ways_with_tmc_tags_error,nodes_with_tmc_tags_ok,nodes_with_tmc_tags_error,connection_and_end_nodes_ok,connection_and_end_nodes_error,ways_with_tmc_tags_non_areas,ways_with_tmc_tags_areas,ways_in_rels_with_tmc_tags,tmc_areas,nodes_with_tmc_tags
Zum Beispiel die Darßer Straße. Die Locationnodes hattest du aber zum Beispiel für den Wartenberger Weg auch in deiner Datenbank.

Ah, verstehe.

Derzeit nichts dergleichen, nicht einmal PostGIS - auf meinem Server habe ich nur eine ganz simple MySQL-Datenbank, in die ich direkt die Tabellen so geladen habe, wie sie von den jeweiligen Ländern angeboten werden. Daraus sucht mein Skript dann zusammen, was für eine GPX-Datei nötig ist.

Ja, stimmt. Derzeit zeigt meine Liste nur komplette Straßen an, in diesem Fall ist das die L 1139, die aber nicht auf der ganzen Strecke diesen Namen hat. Deshalb taucht der auch nicht in der Liste auf, sondern nur am Node als rnid (road name id). Ich werde dazu später mal eine Suchfunktion für Namen basteln und die Anzeige etwas strukturieren, damit man auch Segmente und Punkte auflisten kann, ohne gleich die komplette DB runterladen zu müssen. Derzeit kann man Punkte nur finden, indem man ihren Location Code von Hand in den Link eingibt.