Normdiskussion

Hi zusammen,

dieser Thread ist zur Diskussion von Normen in OSM gedacht. Es geht darum, einerseits klare Regeln formulieren zu können und andererseits die Freiheit der Mapper nicht einzuschränken.

PS: Rechnet erstmal nicht mit Antworten von mir. Ich will nicht meine Ideen verteidigen, ich will dass sie verbessert werden und neue Gedanken bekommen. :-))

Ich denke, dass Normen eine wichtige Rolle in OSM spielen könnten, weil sie
Verbindlichkeit und Unverbindlichkeit auf eine Art ermöglichen, die zur
Funktionsweise des OSM-Projektes passen.

Eine Norm im Sinne dieses Beitrags ist eine Vorschrift, die die Bedeutung von
Tags und Roles klar definiert. Diese Vorschrift ist jedoch nur dort
verbindlich, wo sie ausdrücklich genannt wird (Vorschlag: “OSMNORM=nnnn”). Eine
solche Norm muss unveränderlich und dauernd zugreifbar sein, damit jeder
Mapper darauf Bezug nehmen kann und nicht andauernd nachsehen muss, ob sich
da etwas geändert hat. Wenn sie revidiert werden muss, dann wird eben eine
neue Norm gemacht.

Ein Beispiel (siehe jedoch die Anmerkung unten):

Rolltreppen haben meines Wissens keine klar definierte Richtung, es ist also
nicht klar, ob man den Way in Aufwärts- oder Abwärts- oder Bewegungsrichtung
mappen soll. (Wenn ich mich da irre, dann stellt Euch einfach vor, es wäre
anders :slight_smile: ) Der Mapper A macht sie nun immer in Aufwärtsrichtung, der Mapper
B macht sie immer in Abwärtsrichtung. Beide benutzen außerdem noch ein Tag
“movement”, das “up” oder “down” sein kann. Für uns als Leser der Daten
bedeutet das aber, dass wir nun bei keiner Rolltreppe mehr etwas über die
Richtung sagen können, obwohl beide etwas über die Richtung sagen wollten.

Wie helfen hier Normen? Mapper A könnte eine Norm (irgendwo zentral numeriert
und einsehbar) hinterlegen, in der de facto “immer aufwärts” steht. Mapper B
kann das Entsprechende tun. A bekommt die Normnummer 4711, B bekommt die
Normnummer 4712. Jetzt kann A an “seine” Rolltreppen das Tag “OSMNORM=4711”
anhängen und B kann entsprechendes tun.

Bei beiden Mappern wissen wir als Leser jetzt, in welche Richtung die
Rolltreppe geht. Zwischen 4711 und 4712 kann man auch problemlos
konvertieren. Irgendwann wird dann jemand feststellen, dass es auch noch
Rolltreppen mit unbekannter Richtung und wechselnder Bewegungsrichtung
gibt. Er wird dann eine neue Norm machen und man kann die alten Sachen bei
Bedarf problemlos konvertieren.

Editoren könnten aus den Normen entsprechende Menüpunkte bauen und vor
Normverletzungen warnen.

Programme könnten die Einhaltung angegebener Normen prüfen und OSM-Objekte als
definitiv fehlerhaft auflisten.

Renderer könnten unterschiedliche Taggingarten durch Konversionsläufe vor dem
Rendern beseitigen und würden übersichtlicher.

Anforderungen bzgl. Normen:

  • Das Tag mit der Normnummer (“OSMNORM”?) darf nicht für andere Zwecke benutzt
    werden. Es darf noch nicht im Gebrauch sein und muss breit als für diesen
    Zweck reserviert anerkannt sein.

  • Normen dürfen sich niemals ändern und dürfen keine Verweise auf
    veränderliche Dinge enthalten.

    Man würde bei einer Änderung ja die alten Objekte oder deren History
    ändern. Allenfalls kann man dranschreiben: “Bitte nicht mehr benutzen”. Auch
    wenn das letzte Objekt mit dieser Norm verschwunden ist, sollte es noch
    möglich sein, an den Normtext zu kommen, da man ihn für die History
    evtl. braucht.

  • Normen müssen klar sein. Für jedes erwähnte Tag sollten alle zulässigen
    Werte genannt werden und es sollte der Default bei vorhandenem Tag und der
    Default beim kompletten Weglassen klargestellt werden. Wo Defaults
    zugelassen sind, sollte der entsprechende Wert existieren und angegeben
    werden.

  • Wer ein OSM-Objekt ändern will und kann das nicht innerhalb der angegebenen
    Norm tun, der wirft das Normtag raus und drückt die dabei verlorenen
    Informationen anders aus … oder er macht eine neue Norm.

  • Wenn eine Norm angegeben ist und nicht eingehalten wird, dann sollte das ein
    seltener Fall sein. Daher ist es ausdrücklich erwünscht, dass Bots die
    Einhaltung prüfen und ggf. “OSMNORM=nnn” durch “BADOSMNORM=nnn”
    ersetzen. Renderer sollten das Objekt entweder ignorieren oder als fehlerhaft
    darstellen aber nicht rumraten und das Beste draus machen.

  • Eine Norm kann man nicht durch eine “note” oder Ergänzung modifizieren. Man
    kann durchaus “note=wie OSMNORM nnn, aber mit …” schreiben, aber
    “OSMNORM=nnn” mit “note=jedoch …” zählt nicht. Auch “OSMNORM=nnn Variante”
    ist Müll. Kurz gesagt: Wenn “OSMNORM=nnn” dran steht, dann dürfen sich alle
    verarbeitenden Programme und natürlich auch alle Mapper brutal daran halten.

  • Die Datenbankschnittstelle erhält für Objekte mit “OSMNORM”-Eintrag das
    Recht, fehlerhafte Änderungen abzulehnen, sowie explizite
    Werte und Defaults gegeneinander auszuwechseln.

Anmerkung:
Das Beispiel ist etwas zu einfach und wohl auch zu einfach dargestellt, aber
ich wollte Diskussionen über Tagging-Problempunkte raushalten. (Hoffentlich
gibt es kein “Rolltreppenwespennest”, in das ich jetzt gestochen habe.)

Als reale Beispiele sehe ich etwa in sich geschlossene Ways mit
natural=water. Dort kann man in einem Fall für jeden Punkt im innern sagen,
dass er im Wasser ist. Wenn der Way jedoch in einer Relation als einziges
outer-Member vorkommt, dann kann man das nicht sagen.

Ein weiteres Beispiel wäre die Role “stop” im Gegensatz zur Role “” bei
Busliniennodes. Einige drücken damit etwas aus (Bushalt in beiden Richtungen,
bzw. in unbekannter Richtung)… andere nicht.

Auch ein solcher Fall sind die Roles der Wege bei Buslinien mit
“type=route”,“route=bus”. Da bedeutet die leere Role. dass der Way in beiden
Richtungen im Gebrauch ist. Ist es jedoch ein Bestandteil der Linie im neuen
ÖPNV-Schema, dann ergeben sich die Richtungen automatisch und werden daher von
vielen Mappern weggelassen.

Nachteile:
Der Leidensdruck durch konkurrierende Taggingarten lässt nach und das könnte
für noch mehr Taggingarten sorgen…

Ganz ehrlich: Ich bin dagegen. Bevor ein Tag durch ein weiteres Tag erst so spezifiziert wird, dass man etwas damit anfangen kann, sollte man den Tag eben klar festlegen. Im Rolltreppenbeispiel hieße das also: Im Wiki endlich beschließen, ob der Way aufwärts oder abwärts zeigen soll. Nicht nochmehr drumherum anlegen. Wenn etwas erstmal im Wiki steht, ob da nun ordnungsgemäß drüber abgestimmt wurde oder nicht, wird es meistens auch eingehalten. Ich sehe nicht, warum wir (um bei deinem Beispiel zu bleiben) Rolltreppen in beide Richtungen mappen können müssen, obwohl sich daraus garkein Vorteil ergibt. Die Mapper, die jetzt die eine oder andere Variante nutzen, machen das ja nur, weil es keine klare Vorgabe gibt. Und die, die sich an eine solche Vorgabe nicht halten würden, muss man nicht beachten, das sind die gleichen, die statt escalator=yes mit Treppe=Rolltreppe und ähnlichem Quatsch taggen. Es ist gut, dass jeder taggen kann, wie er will, nur so gibt es Weiterentwicklung, aber wer sich nicht an die gemeinsam entwickelten Konventionen halten will, hat meiner Meinung nach OSM nicht verstanden.

Ich denke, dass so eine Normung schon stattgefunden hat, da im Wiki Vorschläge für das “richtige” Mappen zu finden sind.
An dieser Stelle sollte man ansetzen und noch genauere Vorgaben geben, wie was zu mappen ist.
Dabei ist immer wieder das Problem, dass es viele Sonderfälle gibt, sodass selbst eine Normung dies nicht verbessern wird.
Dennoch ist deine Intention genau die Richtige: Wie kann man das “standardisierte” Mappen weiter fördern.
Eine Idee wäre es, um deutlich zu machen, dass man nach einem allgemeingültigen Schema gemappt hat, in dem man eine ID(normung)
anführt in den Eigenschaften des Notes. Dies trifft ja dann deine Idee.
Wobei es eigentlich überflüssig ist, weil man den verwendeten Tag ja im Wiki suchen kann und oft eine genau Erklärung findet.
Ich finde es vielleicht sinnvoll die alten Tags in der “Map_Features” aus der Übersicht zunehmen.

Ich frage mich überhaupt warum es einen Streit gibt, ob die Rolltreppe jetzt hoch oder runter gehen soll?
Haben da welche so einen großen Durchsetzugnswillen? :roll_eyes:

Sei mir nicht böse, aber du hast nicht die Intention seines Eingangsbeitrag erfasst, oder?
Manche spielen halt auch Kindergarten bei OSM. Das ist ein anderes Thema.

Das Problem ist, dass OSM per se zweidimensional ist.
Es gibt also erst einmal kein oben oder unten.

Das Problem mit der Rolltreppe kann man lösen, wenn man an
beiden Endknoten jeweils ein Tagg für oben resp. unten setzt.

Man könnte natürlich auch mit incline=up/down bestimmen, in welcher
Richtung relativ zur Zeichenrichtung des Weges die höhere Seite ist.

Wenn durch eine dieser zwei Maßnahmen festgelegt ist, wo oben/unten
bei der Rolltreppe ist, macht dann so etwas wie direction=up/down
überhaupt erst Sinn. Implizite Annahmen wo nun oben/unten sind,
machen bei so etwas Schwierigkeiten und sind daher zu vermeiden.

Edbert (EvanE)

Wie schon gesagt finde ich implizite Angaben unproblematisch, wenn ausreichend dokumentiert ist, was genau impliziert wird. Multipolygone haben auch funktioniert, als man noch eine Drehungsrichtung einhalten musste (zumindest nicht wesentlich schlechter als jetzt) und auch an anderen Stellen werden gewisse Dinge impliziert, ohne dass es zu nennenswerten Problemen kommt. Mal abgesehen von ständigen Diskussionen, weil entweder die Dokumentation nicht genau genug ist oder weil manche Leute der Meinung sind, Implikation sei generell schlecht.

Das Problem mit impliziten Angaben ist, dass sich nicht jeder
Mapper dieser impliziten Werte bewusst ist.
So tagge ich auch foot=designated bei highway=footway (soweit
das Schild vorhanden ist) u.a. weil andere da nicht so pingelig sind
oder früher waren. Wenn kein Schild vorhanden ist, halte ich
foot=yes hingegen bei highway=footway für überflüssig. Ich lasse es
aber stehen, wenn andere Mapper das bereits eingetragen hatten.

Explizites taggen ist einem nicht absolut offensichtlichen impliziten
Wert (wie im Falle foot=yes bei highway=footway) meiner Meinung
nach immer vorzuziehen, da nur so für jeden Mitmapper wirklich
klar ist, was gemeint ist.

Dein Verweis auf die früher notwendige Drehrichtung bei Multipolygonen
ist übrigens ein Paradebeispiel für problematische implizite Voraussetzungen.
Seien es Multiploygone in Multipolygonen seien es Wasser mit eigener
Drehrichtungsvorgabe innerhalb von Multipolygonen.

Edbert (EvanE)

Ehrlich gesagt, habe ich nicht verstanden worauf “Weide” letztlich hinaus will.
Wo ist denn in dem Rolltreppenbeispiel der Unterschied, ob man eine konvertierbare Rolltreppen-“Richtungs”-Norm festlegt , oder ob man ein Rolltreppen-“Richtungs-” Tag nutzt?

Mit der Bitte um Nachhilfe :confused:

Gruß Jürgen

Wenn ein tag nicht einheitlich genutzt wird, nutzt es nichts, weil man nicht weiß, was es aussagen soll. Wenn es zwei Nutzungsarten gibt und man dranschreibt, ob Art A oder Art B benutzt wurde, kann man’s wieder differenzieren.

Das schon erwähnte incline=up|down sollte eindeutig genug sein (jeder MTBer versteht’s jedenfalls ;)), vielleicht noch irgendwas in Richtung movement=forward|backward|both (*1) oder so dran und gut ist. Wenn jetzt jemand daherkommt und die Wegrichtung ändert ohne die tags anzupassen (irgendein editor wird das sicher erlauben), ist’s natürlich für die Katz.
Wobei die Bewegungsrichtung bei Rolltreppen eh fraglich ist, wenn mich nicht alles täuscht, sollten die meisten im ÖPNV vorkommenden relativ leicht umzupolen sein.

Normen braucht’s imho nur dann, wenn sich zwei konträre Konventionen ergeben haben, die nicht unter einen Hut zu bekommen sind. Für alles andere gibt’s doch das Wiki, wenn dort klipp und klar steht, wie etwas am besten gemappt/-taggt werden sollte, wird sich das (wenn es nicht permanent geändert wird) über kurz oder lang durchsetzen (=> wisdom of the crowd). Wenn ich mir unsicher bin, schaue ich immer ins Wiki und ziehe ggfls. noch Forum und ML zu rate.

*1 besser up|down - horizontale Laufbänder (=> Flughäfen) werden so natürlich nicht erfasst

zumindest josm macht das in der regel automatisch; wenn man die wegrichtung umkehrt, dreht josm auch tags wie forward oder incline um.

wambacher

schon klar, deshalb ja der Zusatz in () :slight_smile:

Hi,

Danke an alle für die Beiträge!

Bei der Rolltreppe hätte ich deutlich machen sollen, dass es kein Beispiel für sinnvollen Norm-Einsatz sein soll. Es sollte nur zeigen, wie es funktioniert, dass Normen einen Konflikt der Tagging-Konventionen lösen. Bei Rolltreppen wäre es aber m.E. Quatsch, dass zu tun.

Realistisch wäre das Buslinienbeispiel. Für die, die es nicht kennen:

Da gibt es zum Einen die Möglichkeit, Hin- und Rückwege aller Varianten in eine Relation zu stecken. Dabei werden die Ways mit “forward” oder “backward” oder “” (d.h. beides) gekennzeichnet, je nachdem , ob der Bus diese Straße in beiden Richtungen der Straße oder praktisch wie eine Einbahnstraße benutzt. Man kann aber auch den Hin- und Rückweg und alle Varianten voneinander trennen und hat so zwar mehrere aber dafür viel einfachere Relationen. Da hier die Ways zusammen eine einfache durchgezogene Linie bilden, ergibt sich die Benutzungsrichtung der einzelnen Stücke automatisch und wird von vielen Mappern weggelassen. Wir haben also jetzt eine Art von Relation “type=route”,“route=bus” mit zwei unvereinbaren Bedeutungen der Role “”. Einmal werden beide Richtungen der Straße von Bussen dieser Linie gebraucht, das andere Mal steht es immer da und sagt also nichts. Beide Verfahren sind verbreitet. Das ist der Fall, der von “yzemaze” so treffend beschrieben wurde.

Ich greife im Moment in diesem Fall auf explizites Taggen zurück. Das bedeutet aber, dass ich bei einer Linie schonmal einige hundert eigentlich überflüssige Roles an Ways schreiben muss und so die Datenbank schon etwas zumülle.

Weide

Eindeutigkeit bei der Attributierung ist Voraussetzung für aussagekräftige Anwendungsprogramme.

Ein Anwendungsprogramm kann nur das darstellen, was die Daten hergeben.
Und die Daten geben nur das her, was der Erzeuger der Daten hineingelegt hat,
und zwar so, dass das was er gemeint hat eindeutig und von jedermann verstanden werden kann.

Dafür ist eine operationalisierte Datenbeschreibung zwingend.

Eine Norm wäre dann die operationalisierte Beschreibungen eines operationalisierten Datensets.

Unser Wiki ist da aber leider höchst mangelhaft,
ebenso unsere Editoren, die sogar jeden Tippfehler erlauben.
(deshalb ja auch die vielen Missverständnisse und die endlosen Diskussionen hier und anderswo)

Gruss, Markus