next up previous contents
Nächste Seite: Berechnung des Kurswinkel Aufwärts: Implementierung Vorherige Seite: Kartendaten - NxMap   Inhalt


Abstand zur Straße

Gegeben ist ein Straßenstück als Strecke $(AB)$. Die vom GPS-Empfänger gemessene Position sein $P$. Gesucht ist der Punkt $G$ auf $(AB)$ mit dem geringsten Abstand zu $P$. $F$ ist der Schnittpunkt von AB mit der Senkrechten zu $AB$ durch $P$. Falls $F$ zwischen $A$ und $B$ liegt ist das der gesuchte Punkt $G$, ansonsten ist $G$ als der Endpunkt der Strecke zu wählen, der näher an $P$ liegt. Zu Beginn der Berechnung sind die Punkte, wie auf Seite [*] beschrieben, in ein kartesisches System zu übertragen.

Die Gerade $f$ durch $A$ und $B$ lautet in Punkt-Richtungsform:


(5.1) \begin{displaymath}
f: \vec{x} = \vec{A} + k (\vec{B} - \vec{A})
\end{displaymath}

Zur Bestimmung der Gerade $g$ durch P, $\perp AB$ wird ein Richtungsvektor $\vec{v}$ senkrecht zur Richtung $\vec{u}$ von $AB$ benötigt.


(5.2) \begin{displaymath}
\vec{u} = \vec{B} - \vec{A} = \left( b_x - a_x \atop b_y - a_y \right)
\end{displaymath}

Der Vektor $\vec{v} = \left( - b_y + a_y \atop b_x - a_x \right) $ erfüllt diese Bedingung, da

(5.3) $\displaystyle \vec{u}\cdot\vec{v}$ $\textstyle =$ $\displaystyle \left( b_x - a_x \atop b_y - a_y \right) \cdot \left( - b_y + a_y \atop b_x - a_x \right)$
(5.4)   $\textstyle =$ $\displaystyle (b_x - a_x) * (-b_y + a_y) + (b_y - a_y) * (b_x - a_x)$
(5.5)   $\textstyle =$ $\displaystyle -b_x b_y + b_x a_y + a_x b_y - a_x a_y + b_x b_y -a_x b_y - b_x a_y + a_x a_y$
(5.6)   $\textstyle =$ $\displaystyle 0 \Rightarrow{} \vec{u} \perp \vec{v}$

Damit lautet die Geradengleichung von g


(5.7) \begin{displaymath}
g: \vec{x} = \vec{P} + n \left( - b_y + a_y \atop b_x - a_x \right)
\end{displaymath}

Im Fußpunkt $F: f \cap g$ gilt:

(5.8) $\displaystyle a_x + k ( b_x - a_x ) - p_x - n ( - b_y + a_y )$ $\textstyle =$ $\displaystyle 0$
(5.9) $\displaystyle \mbox{und ~ } a_y + k ( b_y - a_y ) - p_y - n ( b_x - a_x)$ $\textstyle =$ $\displaystyle 0$

aus 5.8 folgt für $a_y \neq{} b_y$ :

(5.10) \begin{displaymath}
n = \frac{a_x + k ( b_x - a_x ) - p_x }{ - b_y + a_y }
\end{displaymath}

in 5.9 eingesetzt:
(5.11) $\displaystyle a_y + k ( b_y - a_y ) - p_y - \frac{a_x + k ( b_x - a_x ) - p_x }{ - b_y + a_y } ( b_x - a_x) = 0$    
(5.12) $\displaystyle a_y - p_y + k ( b_y - a_y ) + \frac{(a_x - p_x) ( b_x - a_x) + k ( b_x - a_x )^2 }{ b_y - a_y } = 0$    
(5.13) $\displaystyle k ( b_y - a_y ) + \frac{ k ( b_x - a_x )^2 }{ b_y - a_y } =
- (a_y - p_y) - \frac{(a_x - p_x) ( b_x - a_x)}{ b_y - a_y }$    
(5.14) $\displaystyle k \frac{ ( b_y - a_y )^2 + ( b_x - a_x )^2 }{ b_y - a_y } =
- (a_y - p_y) - \frac{(a_x - p_x) ( b_x - a_x)}{ b_y - a_y }$    
(5.15) $\displaystyle k ( ( b_y - a_y )^2 + ( b_x - a_x )^2 ) =
- (b_y - a_y) (a_y - p_y) - (a_x - p_x) ( b_x - a_x)$    
(5.16) $\displaystyle k =
\frac{- (b_y - a_y) (a_y - p_y) - (a_x - p_x) ( b_x - a_x)}{ ( b_y - a_y )^2 + ( b_x - a_x )^2}$    

daraus ergibt sich
(5.17) $\displaystyle k$ $\textstyle =$ $\displaystyle \frac{ ( a_y - p_y ) ( a_y - b_y ) + ( p_x - a_x ) ( b_x - a_x ) }
{ ( b_x - a_x )^2 + ( b_y - a_y )^2 }$
(5.18) $\displaystyle \vec{F}$ $\textstyle =$ $\displaystyle \left( a_x + k ( b_x - a_x ) \atop a_y + k ( b_y - a_y ) \right)$

Das $k$ aus Gleichung 5.17 wird explizit berechnet, da es nicht nur in Gleichung 5.18 zur Berechnung des Fußpunktes $F$ benötigt wird. Anhand von $k$ kann geprüft werden, ob sich $F$ auf $(AB)$ befindet. Für $0 \le{} k \le{} 1$ liegt $F$ auf $(AB)$. Für $k < 0$ liegt $F$ außerhalb von $(AB)$, näher bei $A$ und für $k > 1$ liegt $F$ außerhalb von $(AB)$, näher bei $B$.

Wenn die Straße parallel zur y-Achse verläuft, das heißt genau in Ost-West bzw. West-Ost Richtung, dann ist $a_y = b_y$. In diesem Fall ist


(5.19) \begin{displaymath}
\vec{F} = \left(p_x \atop a_y\right)
\end{displaymath}

Falls der Abstand $\overline{AF}$ größer als der Abstand $\overline{AB}$ ist, liegt $F$ außerhalb von $(AB)$, näher bei $B$. Für $\overline{BF} > \overline{AB}$ liegt $F$ entsprechend außerhalb, näher bei $A$. Ansonsten liegt $F$ zwischen $A$ und $B$.

Falls $F$ nicht zwischen $A$ und $B$ liegt, wird der Endpunkt, der näher an $F$ liegt als auf die Straße verbesserte Position $G$ verwendet. Für $F$ zwischen $A$ und $B$ ist $G=F$.

Ein Straßenzug kann aus mehreren Geraden bestehen. Zu jeder Geraden wird ein Punkt $G_n$ bestimmt. Derjenige Punkt mit dem kleinsten Abstand $\overline{PG_n}$ ist die gesuchte Position auf der Straße mit dem kleinsten Abstand von $P$.


next up previous contents
Nächste Seite: Berechnung des Kurswinkel Aufwärts: Implementierung Vorherige Seite: Kartendaten - NxMap   Inhalt
Wolfgang Becker 2004-02-17