31.01.2014 Aufrufe

Bachelorarbeit (pdf, 0,9 MB) - Universität Osnabrück

Bachelorarbeit (pdf, 0,9 MB) - Universität Osnabrück

Bachelorarbeit (pdf, 0,9 MB) - Universität Osnabrück

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

5.2 Einlesen der Daten 39<br />

In getSplitRoads werden die aus getSimpleRoads erhaltenen Straÿen nacheinander<br />

betrachtet. Jeder Knoten soll in zwei aufgetrennt werden, um nebeneinander laufende<br />

linke und rechte Fahrbahnen zu generieren. Dazu werden Winkelhalbierende verwendet.<br />

Einen Sonderfall stellen der erste und der letzte Knoten einer Straÿe dar. Hier<br />

muss der Knoten auf der zur Startknotenverbindung senkrechten Strecke durch den<br />

betrachteten Knoten verschoben werden. Dazu wird der Richtungsvektor der Knotenverbindung<br />

aus erstem und zweitem bzw. vorletztem und letztem Knoten und dessen<br />

Normale berechnet. Zu den Koordinaten des Knotens wird jeweils das Produkt aus Normale<br />

und Splitfaktor addiert bzw. substrahiert und dadurch der Knoten für die rechte<br />

und linke Fahrbahn bestimmt. Die Erstellung der neuen Knoten wird in den Funktionen<br />

getRightNode (Algorithmus 4) bzw. getLeftNode (Algorithmus. 5) gezeigt. Damit die<br />

enthaltenen Richtungsangaben der neuerstellten Gegenfahrbahn korrekt bleiben, werden<br />

die Attribute EGT_Von_Ort bzw. EGT_Nach_Ort sowie EGT_Vorgaenger<br />

bzw. EGT_Nachfolger der Knoten getauscht. Des Weiteren müssen die Geocodes der<br />

neuerstellten Knoten beim Straÿensplitting neu berechnet werden. Dazu wurde ein<br />

Geocoder implementiert, der für x- und y-Koordinate den entsprechenden Geocode<br />

bzw. für einen Geocode die entsprechenden Koordinaten berechnet. Für alle anderen<br />

Knoten wird zum Verschieben der Koordinaten eine Winkelhalbierende am betrachteten<br />

Knoten benötigt. Diese wird anhand der Richtungsvektoren aus vorhergegangenem und<br />

aktuellem Knoten und aktuellem und nachfolgendem Knoten berechnet. Über die Normale<br />

der Winkelhalbierenden werden unter Verwendung der Methoden getRightNode<br />

bzw. getLeftNode wieder die Knoten für die linke und rechte Fahrbahn gewonnen. Die<br />

auf diese Weise erstellten Fahrbahnen, werden dem Rückgabeobjekt hinzugefügt. Straÿen,<br />

bestehend aus nur einem Knoten, sowie leere Straÿen werden nicht übernommen.<br />

Dieses Verfahren stellt eine einfache Möglichkeit dar, um die Fahrbahnen einer Straÿe<br />

getrennt voneinander anzuzeigen. Allerdings kommt es z.B. bei sehr engen Kurven zu<br />

Darstellungsproblemen, die an dieser Stelle aber vernachlässigt wurden, da die Anzeige<br />

selbst nicht Bestandteil dieser Arbeit gewesen ist. Die aus getBidirectionalRoads<br />

bzw. getSplitRoads erhaltene Liste von Straÿen wird ebenfalls als Rückgabewert der<br />

Methode getRoads verwendet.<br />

Algorithmus 4 getRightNode: Berechne rechten Knoten zur Fahrbahntrennung (erhält<br />

Knoten p 1 und Normale Norm)<br />

Lege EGT_Node Result = p 1 für die Rückgabe an<br />

Setze Koordinaten von Result (verschoben mit Splitfaktor * Norm nach rechts)<br />

Berechne Geocode von Result neu<br />

Liefere Result zurück<br />

Algorithmus 5 getLeftNode: Berechne linken Knoten zur Fahrbahntrennung (erhält<br />

Knoten p 1 und Normale Norm)<br />

Lege EGT_Node Result = p 1 für die Rückgabe an<br />

Setze Koordinaten von Result (verschoben mit Splitfaktor * Norm nach links)<br />

Berechne Geocode von Result neu<br />

Tausche Richtungsangaben (Spiegelung der Richtung dieser Fahrbahn)<br />

5: Liefere Result zurück

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!