[Talk-de] Relation für Lange Ways

Frederik Ramm frederik at remote.org
Fr Jan 16 23:47:34 UTC 2009


Hallo,

Ekkehart wrote:
> Wenn alle sicher sind, daß das funktionieren wird

Ich habe geschrieben: "Ich gehe davon aus, dass...". Nicht: "Alle sind 
sicher, dass...".

> muß es doch irgendwo 
> auch einen Plan geben, wie.

Nicht alle Plaene, die es im Projekt gibt, stehen auch im Wiki ;-) im 
Wiki und den Mailinglisten suchen hilft oft, aber wenn man da nichts 
findet, heisst das beileibe nicht, dass es einen entspr. Plan nicht gibt.

Es stand vorher schon auf der "Collected Ways"-Relationsseite, aber ein 
bisschen un-offensichtlich. Ich habe das mal ausdrücklicher formuliert:

http://wiki.openstreetmap.org/wiki/Relations/Proposed/Collected_Ways

Es gibt da noch eine gewisse Unschaerfe zwischen den "Route" und 
"Collected Way"-Relationen (eine Route ist eher attributiv, ein 
"collected way" eher konstitutiv, falls man das so sagen kann).

> - Welche Rollen müssen subrelationen haben?
> - Welchen Typ müssen Superrelationen haben?
> - Welche Tags müssen Superrelationen haben?

Eine Subrelation weiss nicht, dass sie Subrelation ist, genauso wie ein 
Wegstück einer Relation nicht unbedingt weiss, das es zu einer Relation 
gehört.

Durch Karlsruhe verläuft die A5. Sie besteht aus vielen einzelnen Ways. 
Die sind derzeit alle noch mit "highway=motorway, ref=A5" getaggt. 
Zugleich befinden sie sich in einer Relation für die A5. Die Vererbung 
von Tags (alles bis auf "type" wird abwärts vererbt, Way schlägt 
Relation) ist derzeit, wie Du vermutlich weisst, noch nicht 
flächendeckend implementiert, das heisst, man kann das 
"highway=motorway, ref=A5" an den einzelnen Ways noch nicht entfernen, 
aber eines Tages wird man das können und einfach nur die Relation 
entsprechend taggen. Das einzelne Wegstück wird dann unter Umständen 
*gar keine* Tags mehr haben (genauso wie Nodes oft *gar keine* Tags 
haben, weil sie eben nur als Bausteine für einen Way gebraucht werden).

Später wird das gleiche Verfahren kaskadierbar anwendbar sein, d.h. es 
gibt dann eventuell eine deutschlandweite Relation fuer die A5, die als 
Member nicht jedes einzelne Karlsruher Wegstueck hat, sondern nur eine 
Relation, die z.B. etwas darstellt wie "A5 in Baden-Wuerttemberg" oder 
"A5 in Karlsruhe" oder so...

> - Wie findet man vorhandene Superrelationen?

Der "map"-Aufruf des API hat bereits eine einstufige (!) Rekursion 
eingebaut, d.h. Du bekommst eventuelle Superrelationen zu 
heruntergeladenen Relationen mit (aber nicht deren Superrelationen). Zu 
meiner Schande muss ich gestehen, dass dieses Feature (einstufige 
Rekursion bei Relationen) sich bislang nur denen erschloss, die den 
Source (sites/rails_port/app/controllers/api_controller.rb) gelesen 
haben. Ich habe das jetzt in der Dokumentation ergaenzt:

http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.5#Retrieving_nodes.2C_ways.2C_and_relations

Es gibt ausserdem einen speziellen API-Aufruf, der im Augenblick 
allerdings einzeln fuer jede in Frage kommende Relation aufgerufen 
werden muss, um eventuelle diese Relation enthaltende Relationen zu finden:

http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.5#Finding_Back_References

> - Wie funktioniert Mehrfachvererbung?

Dazu habe ich mir keine Gedanken gemacht. Bei attributiven Relationen 
(das sind die allermeisten!) soll ja ohnehin keine Vererbung stattfinden 
- bloss weil irgendwas Teil eines Abbiegeverbots ist, "erbt" es deswegen 
ja nichts. Nur bei konstitutiven Relationen ("besteht aus") ist das m.E. 
interessant. Aber das ist sicherlich noch ein Thema, das man weiter 
formalisieren muss. Insbesondere kann man nicht von Clients erwarten, 
dass sie eine staendig aktualisierte Liste aller denkbaren Relationen 
haben, es muss also ein allgemeines Konzept her.

> - was machen bei mehreren, widersprüchlichen Superrelationen?

Das waere zum Beispiel der Fall, wenn zwei Autobahnen sich irgendwo des 
gleichen Stuecks Asphalt bedienen. Das ist aber ein Problem, das durch 
Superrelationen nicht neu eingefuehrt wird; bei Superways besteht das ja 
schon genauso. Muss man dann schauen, wie man das löst. Ich würde sagen, 
dass manche Tags sich in so einem Fall addieren (Way gehört zu einer 
Relation mit Ref=A5 und einer mit Ref=A45, dann laufen hier beide 
Autobahnen auf dem gleichen Stueck), andere aber widersprechen sich 
(maxspeed=50 und maxspeed=70), dann muesste der Way selbst entsprechend 
getaggt werden. (Hm, es gibt doch in D auch so Faelle, in denen eine 
Bundesstrasse ein Stueck auf einer Autobahn verlaeuft, oder? Da traefen 
sich dann highway=primary und highway=motorway auf dem gleichen Stueck 
Fahrbahn - aber das geht ja schon von der StVO her nicht, entweder ist 
was ne Autobahn oder ne Bundesstrasse...).

> - Kann irgendein Editor damit umgehen?

JOSM und Merkaartor können kaskadierende Relationen erzeugen und 
verarbeiten, aber zumindest JOSM bietet noch keine Möglichkeit, sich mit 
dem o.g. API-Aufruf in einem eventuellen Relationsbaum nach oben zu 
hangeln. Eventuell muss man da auch die API noch verbessern, indem man 
bei diesem Aufruf mehrere Relations-IDs zulaesst, damit das schneller geht.

Bye
Frederik

-- 
Frederik Ramm  ##  eMail frederik at remote.org  ##  N49°00'09" E008°23'33"




Mehr Informationen über die Mailingliste Talk-de