Entfernungsberechnung: Unterschied zwischen den Versionen

GISWiki - Das freie Portal für Geoinformatik (GIS)
Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
 +
==Code==
 +
===[[Visual Basic]] ===
 +
Quelle: [http://de.wikipedia.org/wiki/Benutzer:Aerocat Aerocat], in [http://de.wikipedia.org/w/index.php?title=Wikipedia:Auskunft&oldid=39725570 Wikipedia]
 +
<source lang="vb">
 +
 +
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
 +
</source>
 +
 
==Weblinks==
 
==Weblinks==
  

Version vom 5. Dezember 2007, 19:17 Uhr

Code

Visual Basic

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