Hi,

Am 10.07.2012 08:33, schrieb Sarah Hoffmann:
Kannst du konkrete Beispiele nennen von Anwendern, die irgendeiner Relation
ausser den drei wirklich gebrauchten (Routen, Abbiegerelation,
Multipolygon) nachweinen würden?

Es ist deine Ansicht, dass dies die drei einzigen sind, die wirklich gebraucht werden. Du kennst das Wiki, Leute haben sich über Jahre Gedanken darüber gemacht, wo deren Meinnung nach Relationen sinnvoll sind. Ich denke nicht, dass Du intensiv genug geforscht hast, um deren Arbeit mit ein bisschen m.E. zu entkräften. Ich persönlich habe in letzter Zeit waterway, bridge, site Relationen genutzt.

Speziell bei den waterways erhältst Du z.B. keinen eindeutigen Strang von Quelle zur Mündung. Auch eine Relation garantiert da nichts, aber wenn ich mir vorstelle, dass ich mir einen Hauptflusslauf erstmal Weg für Weg über Overpass oder einer lokalen DB ziehen müsste, mit einem gut möglichen overhead von 2/3 falschen Positiven, kommt mir das Grauen. Z.B. gibt es viele gleich benannte Nebenarme, Fahrrinnen, Schleusenarme, etc. - ich verlasse mich auch nicht auf die Relation allein, verwende sie aber als Ausgangspunkt. Weiterhin siehst Du z.B. am Rhein-Delta, dass ein Tag-Matching+Node-Verbindung nutzender Algorithmus versagen wird, denn in den Niederlanden heißt der Rhein schonmal Rijn und fließt über Waal, Lek, etc. ab. Das sind nur ein paar der Spezialitäten, die mir hier anwendungsspezifisch einfallen, es gibt sicher 'zig andere, aber nicht jeder hat die Zeit und die Muße auf dieser Liste gegen den Minimalismus anzukämpfen.


Wie Jochen bereits gesagt hat, muss man für die meisten Sachen den
Fall ohne Relationen ohnehin implementieren, weil es dieser Fall
immernoch der häufiger gebrauchte ist.

Ja, aber er ist die klar schlechtere Approximation gegen eine gewissenhaft gepflegte Relation. Im Prinzip sollte das Fallback-Methode sein. Ich stimme zu, dass es für viele Relationstypen Nachholbedarf bei der Spezifikation gibt, um etwa einen ähnlich guten Dokumentationsgrad, wie bei den MPs zu erreichen.


Relationen sind wesentlich leichter versehnlich kaputt zu machen als Nodes, Wege und Tags, weil sie unsichtbar im Hintergrund herumlungern und man nicht sofort sieht, dass man da etwas ändert.

Mit der von Dir erstellten Cycling-Map (Kompliment übrigens) weißt Du doch, wie man sie sichtbar macht. Ich finde nicht, dass die "Unsichtbarkeit" ein Argument gegen Relationen ist und finde umgekehrt, dass z.B. auch nicht verbundene Nodes wenn sie Nahe beieinander oder aufeinander liegen, schwer identifizierbar sind. Zudem werden die Routen auch in Editoren visualisiert, das kam auch nicht über Nacht. Visualisierungen für andere Relationen werden auch kommen, je nach Bedarf.


Wenn du dir zuviel dieser "Freiheiten" herausnimmst, schränkst du gewaltig die Freiheiten der anderen Mapper ein. Siehe oben. Relationen sind in erster Linie ein Hindernis für deine Mitmapper. Es geht nicht darum, 'einheitlich' zu mappen, es geht darum, das ganze so einfach wie möglich zu halten, damit es für alle verständlich bleibt. Ausserdem sind Relationen ein Motivationskiller, wenn es darum geht Fehler zu korrigieren. Wer mag schon einen Weg anfassen, der Mitglied in 15 Relationen ist. Ein Weg mit 15 kryptischen Tags ist zwar auch ein bisschen lästig, aber normalerweise kann man die Tags einfach ignorieren, frei nach dem Motto 'leben und leben lassen'.

Das ist total subjektiv. Verlege ich den Weg mit 15 kryptischen Tags, ohne mir deren Inhalt anzuschauen, entstehen Fehler in evtl. größerem Maße, als wenn jemand Relationen bricht, die ein anderer nachpflegt. Natürlich bedeutet das alles Aufwand, der vergrößert sich aber ohne Relationen nur. Ich bin der Auffassung, dass in Gebieten mir hoher Datendichte und evtl. auch vielen Relationen es unabdingbar ist, dass sich ein Mapper Gedanken macht, /was/ er /wie/ ändert. Ob er da, für den Fall er macht sich keine Kopf, 15 Relationen bricht oder 15 kryptische Tags dorthin verlängert, wohin sie nicht gehören, spielt eine untergeordnete Rolle. Es geht immer zu Lasten derer, die gewissenhaft arbeiten. So ist das nunmal - wie sagtest Du: das ist kein technisches Problem, sondern ein menschliches..


Für mich bedeuten Relationen Flexibilität - u.U. oft auch, dass ein und
der gleiche geografische Sachverhalt eben vielfältig modelliert werden
kann.  Warum begreifen wir das nicht weiterhin als Chance?  Warum wird
stattdessen der Perfektionismus in primitiveren, unstrukturierten Daten
gesucht, wie es Knoten und Weg nunmal sind?
Geografische Sachverhalte sollte man über Geometrie ausdrücken und
nicht durch irgendwelche künstlichen Strukturen. Natürlich könnten
wir für jede Bushaltestelle eine Relation erstellen, die besagt, ob
sie jetzt rechts von der Strasse liegt oder links. Aber was ist der
Sinn? Diese Information ist bereits in der DB, das heisst die Relation
bringt absolut nichts.

Siehe unten, Beispiel "Liste aller Brücken über die Elbe". Ich stimme Dir zu, dass es Grenzen geben muss, aber das sind Einzelfall-Entscheidungen. In Einzelfällen können Redundanzen durchaus nützlich sein, da sind Vor- und Nachteil zu gewichten, Aufwand abzuschätzen, Alternativen zu bewerten. Ob das nun dem einfacheren Datenbezug dient, oder um die Küstenlinie von Russland zu prüfen.

Für dein fiktives Beispiel der geografischen Lage von Bushaltestellen stimme ich Dir zu - es ist aber eben nicht immer so einfach. Und manchmal skaliert es auch schlecht - warum sollten diejenigen mit viel Rechenpower bevorzugt werden?

nur nicht vom Menschen.


Jetzt wirfst du irgendwelche technischen Begriffe in den Raum ohne
dir wirklich mal einen Kopf gemacht zu haben, wie das ganze eigentlich
funktioniert.

Roland führte LUT an, um zu zeigen, dass der Fall wiederholender Tags auf Wegen unkritisch ist, weil er in der Masse der existierenden Software druchoptimiert wird. Soweit mir bekannt ist, existiert dafür aber eben weder ein einheitliches Package, noch eine API, noch gute Dokumentation, noch irgendein Standard, so dass man das im eigenen Projekt mal eben so verbauen könnte. Schau Dir Relationen an: sie sind gut dokumentiert, sie sind Teil der API, ergo finden sie ihre Verbreitung auch dorthin, wo sie der Informatiker und redundanzablehnende Mensch ablehnt. Es ist auch eine Frage der Verfügbarkeit und Verständlichkeit. Das Konzept der Relationen ist nicht so schwer zu verstehen, wie es auf dieser Liste überwiegend dargestellt wird.


  Redundanz in den Tags ist bisher einfach kein grosses Problem
gewesen. Die Art und Weise wie Datenbanken das handhaben, ist effizient
genug. Wir haben ganz andere Ecken, wo wir ernsthafte Probleme mit der
Effizienz bekommen. In erster Linie bei der Berechnung der Weggeometrien
und dem Node-Lookup.

Wird auf Relationen verzichtet, entstehen mehr nodes und noch mehr ways. Das ist also eher ein Argument für Relationen, weil Weggeometrien je nach Bezug durch Relationen "recyclet" werden.


Da die Daten, wie die Softwareprojekte drumrum vermutlich nie perfekt
sind, ist das mehr an Information und evtl. auch Redundanz eine Chance,
gute QM-Tools zu bauen.  Am Beispiel der Bundesstraßen z.B. könnte man
die Argumente derjenigen aufgreifen, die meinen

     "man könne den Verlauf der Bundesstraße auch programmatisch anhand
des ref= zusammenbauen und braucht die Relation gar nicht"

und gegen das prüfen, was manuell gepflegt wird.  In der Summe ergibt
das eine gewisse Robustness gegen die Fehler, die man beim Mappen machen
kann:

     - versehentlich Relation beschädigen
     - versehentlich ref löschen
Du argumentierst hier gerade gleichzeitig, dass wir Relationen brauchen,
um Redundanz zu vermeiden und um Redundanz zu haben. Was nun?

Ich schließe mich deiner Analyse meiner Argumentation an, denke aber nicht, dass das ein Fall ist, der eine Entscheidung für/wider braucht. Ja, wir brauchen Relationen um (übermäßige) Redundanz zu vermeiden. Ja, wir können die Redundanz, die durch Überschneidung mancher Tagwerte, die sowohl auf dem Weg, als auch in der Relation gesetzt werden, z.B. für QA nutzen.


Beides simple Abfrage und das kleinste Problem für dein QA-Tool. Nutzen der 
Relation: null.

Hier kann ich Dir nicht folgen. Die Mengen r=(alle member der Relation xx) und w=(alle ways mit ref=xx) sollten in einem bestimmten Verhältnis stehen. Mindestens sollte w Untermenge von r sein, es muss aber nicht in jedem Fall eine echte sein (je nachdem, ob z.B. eine Landstraße, deren Verlauf streckenweise durch Bundesstraßen ersetzt wurde, auf den Bundesstraßen mit im ref= erscheint, oder nicht).


Der einzige Grund, Bundesstrassen in eine Relation zu stecken wäre,
dass es Wege gibt über die mehrere Bundesstrassen gleichzeitig
verlaufen. Dann müsste man bei Tags auf unschöne Listen zurückgreifen.
Soetwas hat es in der Schweiz und den USA, aber in Dt. gibt es das, soweit
ich weiss, nicht.

Das gibt es auch in Deutschland. Das ist nach meiner Auffassung aber noch nicht einmal der Hauptgrund, weshalb B's als Relation angelegt werden/wurden (schließlich ließe sich das ja auch mit mehreren Werten im ref-Tag modellieren).


Weil er mit noch viel weniger Zauber und Zusatzarbeit aus der DB zu
holen ist. Nehmen wir mal eine osm2pgsql-DB. Dann würde das etwa so
aussehen:

SELECT ST_NumGeometries(ST_LineMerge(w.way))
        FROM planet_osm_way w, planet_osm_polygon p
  WHERE p.name = 'Deutschland' AND w.name = 'Goethestrasse'
    AND w.highway is not null
         AND ST_Within(w.way, p.way);

Das war ein 5-Zeiler, den ich in drei Minuten zusammengeschrieben
habe und der dir eine recht gute Approximation deiner Anfrage geben
sollte. Ein Stündchen mehr Arbeit und man kann auch noch eine Reihe
Spezialfälle abdecken. Warum also sollte man hunderte Mapper sinnlos
Zeit mit Relationen verschwenden lassen, wenn man die gleiche Info
mit ein bisschen Warten aus der DB bekommt?

Das habe ich schon geschrieben - Stichwort QM-Tools. Du hast als Informatikerin das "kleine Welt"-Problem. Du denkst Dir diesen 5-Zeiler aus und glaubst/hoffst, dass das "eine recht gute Approximation" ist. Beweisen kannst Du es nicht, weil Du gar keinen Überblick über alle möglichen Fälle der Realität hast und Dir eigentlich auch nur mit Tools einen Überblick über die Daten in der DB verschaffst, die wiederum eine ganze Menge an Spezialfällen wegabstrahieren.

Du hast einen Vorteil, wenn "hunderte Mapper" Zeit damit verschwenden, die Realität im kleinen auf robuste/redundante Weise zu modellieren, weil Du mit diesem Plus an Daten (etwas besser) prüfen kannst, ob deine Approximationen überhaupt brauchbar sind.

Wie stw schon anführte, ist diese Approximation mehr als schlecht, weil viele ways in der DB schon gesplittet sind, nicht immer einen node teilen müssen, je nach Straßenausbau oder Luftbildverfügbarkeit getrennte Fahrbahnen und teilweise -spuren gemappt sind, etc. pp. (das ist aktueller Stand, keine Befürchtung). Von Jochen wurde weiterhin angeführt, dass zur Not die geografische Nähe genutzt werden könne - ein Beispiel, das die Grenzen dieses Ansatzes klar aufzeigt, sind die Relationen, die Powermapper bilden, um Brücken zu modellieren. Die Realität hält eine Vielzahl von Varianten vor, die einen Mix zwischen diesen beiden Extrema bilden:

- vollständig getrennte, aber räumlich eng aneinandergrenzende, physische Strukturen
    - eine physische Struktur, die alle multimodalen Transportwege trägt

Das ist nur ein Beispiel, das mir adhoc einfällt, anhand welchem eine Heuristik versagt, zu entscheiden, wie einfache Wege gruppiert werden müssen, um eine bestimmte Fragestellung (hier: welche Wege gehören zu einer Brücke / which ways make up one bridge) richtig zu beantworten. Weitere sind konstruierbar.


Vielleicht passt die Scheuklappen-Metapher am besten, um zu verdeutlichen, dass "vermeide Relationen" kein brauchbarer Weg ist, wenn OSM eine detailgetreue Sicht auf den Planten sein will und bleiben möchte. Indem wir nur in den Tunnel schauen, erhalten wir zwar einen guten Überblick darüber, was im Tunnel liegt und haben ein gutes Gefühl, was die Datenlage betrifft, hören aber auf, uns Gedanken darüber zu machen, was rechts und links davon liegt - im Fall der Relationen: welche Bezüge Mensch zwischen geografischen Objekten herstellt.

Ich stimme zu, dass es Grenzen geben muss, bin aber wie stw der Meinung, dass das fallbasiert entschieden werden sollte. Für mich persönlich sehe ich z.B. keinen Sinn darin, eine Wikipedia-ähnliche "Liste der Brücken über die Elbe" als Relation in OSM zu pflegen. Dennoch, es ist ohne eine solche Relation (momentan) mitnichten wirklich einfach

- mit seinem Lieblingseditor effizient alle Brücken entlang der Elbe zu laden - du meintest es sei kein Argument für eine Relation, weil dann Mapper X effizient Zugriff darauf hat -> dieses Mittel wird beobachtbar genutzt, weil es funktioniert und weil Alternativen fehlen
            -> die Bundesstraßenrelationen sind ein gutes Beispiel dafür
-> Abhilfe kann hier eine stärkere Integration von Overpass-Abfragen in die Editoren bringen, das gibt es aber noch nicht

- eine einfache, in drei Minuten geschriebene Anfrage z.B. für die Overpass API zu erstellen, die diese Brücken zurückgibt -> imho ist das Konzept der Relationen für die meisten Menschen einfacher zu verstehen, als Overpass

    - zu zählen, wieviele Brücken über die Elbe führen - dazu
            - müssten alle gemappt sein
            - alle korrekt getaggt sein (bridge=..)
- multimodale, evtl. richtungsseparierte Wege der gleichen phys. Struktur in bridge-Relationen zusammengefasst sein


Sicher sind diese Aufgaben mit etwas SQL und einer spatialen DB zu lösen, für den, der sich auskennt auch in weniger als einer Stunde. OSM ist aber ein Massenprojekt. Wer tatsächlich daran interessiert ist, die Nutzung von Relationen einzudämmen, der sollte sich Gedanken machen, wie die Dinge, zu deren Lösung sie momentan herangezogen werden (und dazu gehört offenbar eben auch die Verwaltbarkeit von OSM-Objekten in Projekt xyz), alternativ und ohne Mehraufwand gelöst werden können - die angesprochene stärkere Integration von Overpass in Editoren wäre da ein Anfang.

Momentan dürfte die Masse der Mappenden ein Problem damit haben, wenn sie sich ihre zu editierenden Daten vorher über eine Overpass-Query zusammensuchen oder, noch besser, ein paar Zeilen SQL schreiben soll, um einfach einen Wasserlauf oder den Verlauf einer Bundesstraße zu erhalten. Da fällt es dann eben doch leichter, das über eine Relation zu organisieren, auch wenn sie theoretisch überflüssig ist und durch den DB'ler nicht genutzt wird, weil er sie sich selbst über das entsprechende Statement zusammensetzt.

Wie gesagt, ich betrachte das eher als Chance für robustere Daten statt als Übel. Wenn die Relation, die mir ein spatiales DBMS mit entsprechendem Statement generiert dem gleicht, was Mapper angelegt haben, hätte ich höheres Vertrauen in die Daten, als ohne diesen Vergleich, aber nat. bleibt auch das nicht frei von Fehlerquellen.



Gruß
Christian

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an