Offset Ways

Hallo zusammen,

wir erstellen Verkehrskarten mit dem Mapnik. Dabei ergibt sich folgendes Problem.

In Abhängigkeit von der Verkehrslage färben wir die Ways, die zu bestimmten Straßen, gehören ein (z.B. Stau rot).

Bei vielen Straßen gibt es Ways für beide Fahrtrichtungen. Deshalb würden wir gern die Verkehrssituation, auf beiden Ways (Spuren) unabhängig darstellen.
In welcher Form die Darstellung erfolgt, ist noch offen. Die einfachste Möglichkeit wäre aus unserer Sicht, die Spuren getrennt darzustellen.

Bei hohen Zoomstufen, in denen die Ways auf der Karte getrennt erscheinen, ist das kein Problem. Sobald man jedoch den Zoom verringert, liegen die Ways übereinander und man kann nur noch eine Spur erkennen. Das Problem tritt natürlich immer auf.

Wir hoffen aber, das es möglich ist, das Rendering von Mapnik so einzustellen, daß man die Spuren auch getrennt darstellen kann, wenn dies vom Zoom her eigentlich nicht mehr geht. Das wäre z.B. durch die Benutzung eines Offsets zwischen den Ways der beiden Spuren denkbar. Wir verwenden für das Rendering den LineSymbolizer. Wie könnte man damit den beschriebenen Offset implementieren? Falls unser bisheriger Stylesheet in dem Zusammenhang interessant wäre, könnten wir diesen auch in die Liste posten.

Interessant wäre natürlich auch, ob es in Zukunft solche Offset Darstellungen im Mapnik geben soll.

Vielen Dank für Eure Hilfe

:wink: g e r d

Dazu müßte der Renderer erkennen können, daß die beiden “ways” zur selben Straße gehören, und nur in Gegenrichtung verlaufen. Dann könnte man die Spuren um ein paar Pixel paralell zur Mittellinie verschoben darstellen.
Ob Mapnik in der Lage ist, den antiparallelen Verlauf zu erkennen, weiß ich nicht. Bzgl. mkgmap habe ich mal auf der dortigen Mailing-Liste nachgefragt und nie eine Antwort erhalten - geht dort wohl nicht.

Das nennt sich Verdrängung. Mapnik kann das nicht. Wenn ihr das beruflich macht, dann könnt ihr das selber programmieren, andernfalls würde ich mir den Aufwand nicht antun.

Ich habe neulich das Gerücht gehört, dass mapnik2 Wege mit seitlichem Versatz rendern kann.

Interessant!!! Hast Du irgendwelche Links oder Beispiele?

Ich weiß nicht auf was Sven sich in oben verlinkter Mail bezieht, ich hatte mir zu diesem Thema mal folgenden Issue notiert:
Issue #180: Parameter for line symbolizer to offset line to one side

Der ist inzwischen zwar erledigt, soll aber wohl erst mit diesem Folge-Issue freigegeben werden:
Issue #927: enable parallel/offset lines using chainable coordinate transformations

Gruß,
Norbert

Beispiele finden sich in kommerziellen Karten und in Kartografielehrbüchern. Wenn du aber Algorithmen oder gar deren Implementierungen meinst, muss ich dich enttäuschen.

Ist damit so etwas gemeint oder kann das Mapnik 1 auch schon?
http://www.transportparadise.co.uk/cyclemap/?zoom=3&lat=51.74965&lon=-1.24307&layers=B0
Dort werden z.B. cycleway:left=lane oder lcn:left=lane am Straßenrand gezeichnet.

Gruß,
Mondschein

Sehr schöne Karte! Ist allerdings mit Maperitive gemacht.

Hab dazu diese Aussagen gefunden (hat mich jetzt interessiert):

http://gis.19327.n5.nabble.com/Cycle-tracks-now-show-up-on-OCM-tp5642604p5644003.html (vom 16.04.2012)

http://braincrunch.tumblr.com/post/22377993557/oxford-bus-cycle-map-in-print

Gruß,
Norbert

Schade.
Hoffentlich kann das Mapnik 2 bald (falls es das nicht doch schon kann).

Gruß,
Mondschein

Quelle: https://github.com/mapnik/mapnik/wiki/Code-sprint

Möglicherweise kannst du das dann verwenden.

Gruß,
Mondschein

Bei Garmin-Karten kann man den gewuenschten Effekt erreichen, in dem man mit der Farbe “Transparent” arbeitet. D.h. wenn man je nach Fahrtrichtung jeweils die halbe Breite transparent zeichnet, so kann man dann zwei Wege uebereinander Malen und das Endergebnis sieht wie zwei benachbarte Wege aus.

Keine Ahnung, ob der Trick auch bei Mapnik funktioniert.

Gruss
Torsten