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