From GISWiki
Code
Source: Aerocat in Wikipedia
Function Entf(ByVal Laenge1 As Double, ByVal Breite1 As Double, _
ByVal Laenge2 As Double, ByVal Breite2 As Double) As Double
'Ermittelt die Entfernung zwischen zwei Orten auf der Erde.
'Laenge1 und Breite1 stellen die geografische Lage des ersten,
'Laenge2 und Breite2 des zweiten Ortes dar.
Dim Erdradius As Double
Erdradius = 6370
Entf = aCos(Sin(DtoR(Breite1)) * Sin(DtoR(Breite2)) + Cos(DtoR(Breite1)) _
* Cos(DtoR(Breite2)) * Cos(DtoR(Laenge1 - Laenge2))) * Erdradius
End Function
------
Function DtoR(Grad As Double) As Double
'Konvertiert Winkel im Gradmaß in Winkel im Bogenmaß
DtoR = Grad / (180 / PI())
End Function
-------
Function aCos(X As Double) As Double
If X < -1 Then
X = -1
ElseIf X = -1 Then
aCos = PI()
ElseIf X > -1 And X < 1 Then
aCos = 2 * Atn(1) - Atn(X / Sqr(-X * X + 1))
Else
aCos = 0
End If
'Zu beachten ist: -1 < X < 1, Arccos(-1) = Pi und Arccos(1) = 0
End Function
Weblinks