Nachdem nebenan (im Bürgersteigthread) ja mal wieder über den Sinn und Unsinn von Flächen in OSM diskutiert wurde (wir uns jetzt aber davon entfernt haben, u.a. deshalb hier ein neues Thema), will ich mal wieder ein paar Punkte in den Raum werfen.
Hauptargument gegen Flächen (für Straßen, Bürgersteige und Co.) ist ja, das es das Routing nicht leichter macht und nur dem Rendering diene. Viele Vorschläge, die bis jetzt gemacht wurden, zielen deshalb (und zur Erhaltung der Abwärtskompatibilität) darauf ab, dass Flächen und Linien getrennt erfasst werden, die einen für’s Rendern, die anderen für’s Routing (und Rendern in niedrigen Zoomstufen). Nun ist das aber ja schon deshalb nicht besonders toll, weil man eben zwei Datenbankobjekte pro realem Objekt hat. Heute bin ich über diesen Link gestolpert, in dem es zwar nicht genau um unsere Anwendungen, aber soweit ich das sehe doch um unser Problem geht. Ich kann nicht behaupten, jedes Detail genau verstanden zu haben, aber ich dachte, ich werfe mal in die Runde, was ich meine, dass man daraus für uns schließen kann (ich verwende im Folgenden das Wort ‘Graph’ für das was wir aktuell haben, weil mir gerade kein besseres einfällt. Nichtsdestotrotz ist auch das Gebilde aus konvexen Polygonen ein Graph):
Flächen sind ausreichend für eine routingfähige Beschreibung, folgendes preprocessing vorausgesetzt: Straßenflächen müssten in konvexe Polygone aufgebrochen werden, aber das sollte relativ unaufwendig sein, falls es keine bessere Möglichkeit gibt, sind Dreiecke auf jeden Fall eine Lösung, führen allerdings zu den meisten Wegpunkten.
Das ergibt netto ziemlich genau das Gleiche wie ein Graph, wie wir ihn aktuell verwenden, ist also für’s Routing genauso gut zu gebrauchen, mit den gleichen Algorithmen. Berechnet man zu jedem Polygon den Flächenschwerpunkt (was afaik relativ effizient geht) (oder auch jeweils einen beliebigen Punkt im Polygon) und verbindet diese korrekt miteinander, erhält man einen absolut identischen Graphen wie wir in aktuell haben, der auch zum Rendern in niedrigen Zoomstufen geeignet sein dürfte. Diese Schritte können leicht an einem frühen Punkt im Prozess gemacht werden, so dass die Endanwendungen nicht angepasst werden müssen (bspw. Navis, bei denen in die Programmierung nicht eingegriffen werden kann und die daher auf Graphen angewiesen sind), so dass beispielsweise schon die OSMF neben den direkten Planetfiles auch bereits tesselierte oder in Graphen umgewandelte Auszüge.
Damit wäre hoffentlich geklärt, dass es ausreicht Flächen zu erfassen und dass die zugehörigen Linien nicht notwendig sind. Bleiben einige Probleme (ohne Anspruch auf Vollständigkeit):
- Genauigkeit: Sicher kann man argumentieren, dass es in den allermeisten Fällen garnicht möglich ist, die Flächen mit ausreichender Genauigkeit zu erfassen. Solange man auf GPS-Tracks angewiesen ist das natürlich so. Aber in immer mehr Gegenden können wir hochauflösende Luftbilder verwenden und wenn die korrekt ausgerichtet sind (anhand von GPS-Tracks und co.), lässt sich eine befriedigende Genauigkeit erreichen. Und was ist mit Gegenden, in denen man die nicht hat? Ich denke, beide Systeme können relativ problemlos nebeneinander existieren:
- Abwärtskompatibilität, Gleichzeitigkeit: Wir können nicht überall alle Wege mit Flächen erfassen. Schon garnicht sofort, aber auch auf lange Sicht dürfte das weder möglich noch gewollt sein. Aber das muss ja auch nicht. Es spricht nichts dagegen, Wege wie bisher beizubehalten, wo keine Flächen existieren. Wenn an den Schnittstellen die Wege mit den Flächen verbunden sind, steht einem Routing nichts im Wege.
- Richtungsabhängigkeit: Zugegebenermaßen ein größeres Problem. Aktuell fällt mir keine vernünftige Lösung dazu ein. Sinnvoll wäre vielleicht, wenn Flächenobjekte in der kommenden API neben den reinen Knoten- und Taglisten auch eine Rotation speichern würden. Ob man daraus allerdings solche Dinge wie Einbahnstraßen vernünftig berechnen kann, bin ich mir noch nicht im Klaren. Fällt jemandem etwas besseres ein? (Auch wenn eine Ausrichtung für Flächen für dieses Problem nicht nützt, fände ich sie trotzdem sinnvoll - für Dinge wie die Frontseite eines Hauses beispielsweise).
Meinungen, Ideen, Wünsche? Will mir jemand sagen, dass ich spinne und heimgehn soll? Nur raus damit