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
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