Re: [Talk-de] osmarender: Unechte Kreuzungen
On Sat, May 03, 2008 at 02:22:50PM +0200, Henry Loenwind wrote: > warum pinselt osmarender 2 Straße, die sich optisch im Renderergebnis > berühren, aber keinen gemeinsamen Node haben wie eine Kreuzung? > > Beispiel: > > http://www.informationfreeway.org/index.php?lat=49.334837743028665&lon=8.664168073246309&zoom=17&layers=B000F000F > > Die untere von den drei Sackgassen endet laut josm 8,7m vor der > Umgehungsstraße (3m Fahrbahn, Lärmschutzwand, 2m Grünstreifen, 2m > Wendehammer ... passt). Das liegt einfach daran, dass Strassen im Rendering eine gewisse Breite haben, was sich ja nun nicht vermeiden läßt. Und die Breite der B535 in diesem Rendering ist halt größer als der Abstand vom Ende der Sackgasse zur Mitte der B535. Allgemein werden Strassen in Karten breiter eingezeichnet, als sie wirklich sind, weil man sonst nichts mehr erkennen kann. Ein menschlicher Kartograph würde einen solchen Fall erkennen und die Sackgasse etwas kürzer einzeichnen. Für einen automatischen Renderer ist das aber sehr schwierig, alle solche und verwandte Fälle richtig zu handhaben. Du hast jetzt die Wahl: Entweder läßt Du es, wie es ist und hoffst darauf, dass der Renderer sowas irgendwann mal kann oder Du machst im JOSM die Sackgasse künstlich kürzer. Beides keine optimalen Lösungen... > Muss ich jetzt schon ebenengleiche nebeneinanderliegende Wege nur für > die Renderer auf unterschiedliche Layer setzen? Das auf keinen Fall. Würde auch nichts helfen, dann wäre nur die Sackgasse über der B535. Jochen -- Jochen Topf [EMAIL PROTECTED] http://www.remote.org/jochen/ +49-721-388298 ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-de
Re: [Talk-de] osmarender: Unechte Kreuzungen
Jochen Topf wrote: > On Sat, May 03, 2008 at 02:22:50PM +0200, Henry Loenwind wrote: >> warum pinselt osmarender 2 Straße, die sich optisch im Renderergebnis >> berühren, aber keinen gemeinsamen Node haben wie eine Kreuzung? > Ein menschlicher Kartograph würde einen solchen Fall erkennen und die > Sackgasse etwas kürzer einzeichnen. Für einen automatischen Renderer ist > das aber sehr schwierig, alle solche und verwandte Fälle richtig zu > handhaben. Mir geht es nicht, darum, dass sich die 2 Straßen überlappen (das ist ok), sondern, dass sie als Kreuzung dargestellt werden, d.h. dass die "Randlinien" beider Straßen fehlen. IST: #|g|## -+g|## wwg|## -+g|## #|g|## (#=Hintergrund, -+|=Randlinie, g=gelbe Füllung, w=weisse Füllung) SOLL: #|g|## -|g|## w|g|## -|g|## #|g|## KORREKT ABER UNNÖTIG: #|g|## +|g|## ||g|## +|g|## #|g|## ---+#|g|## www|#|g|## ---+#|g|## #|g|## > oder Du machst im > JOSM die Sackgasse künstlich kürzer. Beides keine optimalen Lösungen... Bringt wenig, für die niedrigste Zoomstufe, in der die Sackgasse noch gerendert wird, müsste ich sie auf 10% ihrer tatsächlichen Länge verkürzen, oder so... >> Muss ich jetzt schon ebenengleiche nebeneinanderliegende Wege nur für >> die Renderer auf unterschiedliche Layer setzen? > > Das auf keinen Fall. Würde auch nichts helfen, dann wäre nur die > Sackgasse über der B535. Umgekehrt, die B535 höher. Ich hab sie mal probeweise auf layer:1 gesetzt, vielleicht wird dann ihr Seitenstrich durchgängig gezeichnet, so wie er soll. Das Problem ist wohl, dass der Renderer die Seitenstriche anhand ihrer Position im Renderergebnis weglässt, nicht anhand der Position der originalen ways. cu Henry PS: EBENFALLS BLÖD: #|g| -|g|-+## w|g|w|## -|g|-+## #|g| Diesen Fall (bei zoom <= 15) hab ich mit ner Sackgasse, die im spitzen Winkel (real) 30cm vor dem Leimbach endet (modelliert als 4m vor der Bachmitte), grademal 500m weiter nördlich. Hier hab ich übrigens schon per layer die Straße unter den Bach gesetzt. ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-de
Re: [Talk-de] osmarender: Unechte Kreuzungen
On Sat, May 03, 2008 at 04:57:21PM +0200, Henry Loenwind wrote: > Das Problem ist wohl, dass der Renderer die Seitenstriche anhand ihrer > Position im Renderergebnis weglässt, nicht anhand der Position der > originalen ways. Das ist alles nur ein Seiteneffekt davon wie der Renderer diese "Seitenstriche" macht. Das geht so: Zuerst zeichnet der Renderer eine schwarze dicke Linie entlang der Strasse und darüber dann eine etwas dünnere farbige Linie. Der Effekt ist dann eine farbige Linien mit einem schwarzen Rand auf beiden Seiten. Genauer: Der Renderer zeichnet zuerst alle schwarzen Linien und dann alle farbigen drüber. Nur dann klappt es nämlich an den Kreuzungen richtig. Daraus ergeben sich in der Regel ganz gut aussehende Karten, aber es gibt jede Menge Fälle, in denen es nicht ganz so rauskommt, wie man gerne möchte. Dieses Verfahren benutzen übrigens alle Renderer, die ich kenne. Auch die proprietären arbeiten alle so. Sie haben also alle diesen Fehler in diesem Fall. Wenn jemand eine Idee hat, wie man das besser machen kann, würde mich das interessieren. :-) Jochen -- Jochen Topf [EMAIL PROTECTED] http://www.remote.org/jochen/ +49-721-388298 ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-de
Re: [Talk-de] osmarender: Unechte Kreuzungen
Jochen Topf wrote: > On Sat, May 03, 2008 at 04:57:21PM +0200, Henry Loenwind wrote: >> Das Problem ist wohl, dass der Renderer die Seitenstriche anhand ihrer >> Position im Renderergebnis weglässt, nicht anhand der Position der >> originalen ways. > > Das ist alles nur ein Seiteneffekt davon wie der Renderer diese > "Seitenstriche" macht. Das geht so: > Dieses Verfahren benutzen übrigens alle Renderer, die ich kenne. Auch die > proprietären arbeiten alle so. Sie haben also alle diesen Fehler in > diesem Fall. Wenn jemand eine Idee hat, wie man das besser machen kann, > würde mich das interessieren. :-) Einfach ist das nicht. Auf Anhieb fiele mir ein: Zuerst werden alle nicht-Endnodes der ways (highway:*) untersucht. Wird ein node noch von mindestens einem anderen way (higway:*) im gleichen layer benutzt, wird der durchgehende way gesplittet. Effekt: Kreuzungen bestehen nur noch aus Endnodes. (Diesen Schritt kann man sich sparen, wenn man den folgenden davon überzeugt, mit durchgehenden ways an Kreuzungen zurechtzukommen.) Dann werden die Endnodes der ways untersucht; wenn den letzten node entweder keine anderen ways (highway:*) im gleichen layer oder mehr als zwei sharen (d.h. es ist ein Ende oder eine Kreuzung), wird das letzte segment des ways (also das Stück vom vorletzten zum letzten node des ways) herausgelöst. Als erstes werden nun die Reste der ways gerendert, darüber dann die herausgelösten Wegenden. Hierbei muss man darauf achten, wie man die Enden der Striche rendert, die Füllung muss rund überstehen, die Umrandung darf es nicht (außer bei echten Wegenden). Erste Verfeinerung wäre es, zuerst die Enden, dann die Mitten und dann die Kreuzungen zu rendern. Als zweite Verfeinerung kann man, statt das ganze letzten Stück herauszunehmen, einen neuen temporären node in den way einbauen, genau (maximale Straßenbreite)/2+(Breite eines Pixels nach dem Rendern) vom Ende entfernt. Das sollte es dann eigentlich erschlagen... cu Henry PS: Wo wir grade bei Sackgassen sind; warum verpasst osmarender Sackgassenenden, bei denen der node mit einer Fläche geteilt wird so schöne Rundungen, und sonst nicht? (z.B. Robinienweg/Willy-Brandt-Straße) Ok, wozu die Rundung da ist, weiß ich, es wundert mich nur, dass osmarender Straßen nicht von sonstigen ways unterscheidet dafür... ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-de