Forums Neueste Beiträge
 

Distanz zwischen Koordinaten berechnen VB6.0

08/06/2010 - 22:47 von Hubert Holler | Report spam
Ich verwende einen VB Code um aus 2 NMEA Koordinaten die Distanz zu
berechnen.
Das ganze funktioniert auch sehr gut. Jetzt habe ich zwei Koordinaten,
wo ich aber einen viel zu großen Wert bekomme.

Die Koordinaten lauten:
Breite start: 46.999913
Lànge start: 15.492768

Breite Ende: 47.000023
Lànge Ende: 15.492642

Wenn ich diese Zahlen z.B. mit der Webseite
http://www.mountainbiker.ch/inhalt/...9MTEz.html
berechne, bekomme ich als Ergebnis: 0.01832998357263285 km, das auch
stimmt.

Wenn ich diese Zahlen aber mit meinem VB Code berechne, bekomme ich
44,54 km heraus. Andere Koordinaten funktionieren ohne Probleme und
decken sich mit den Ergebnissen der Internetseite.

Hier der Code den ich verwende:


'/// Beginn Code
Option Explicit

Public Function GetDistance _
(Latitude1 As Double, _
Longitude1 As Double, _
Latitude2 As Double, _
Longitude2 As Double _
) As Double

Dim Lat1 As Double
Dim Lat2 As Double
Dim Lon1 As Double
Dim Lon2 As Double

Lat1 = Deg2Rad(Latitude1)
Lat2 = Deg2Rad(Latitude2)
Lon1 = Deg2Rad(Longitude1)
Lon2 = Deg2Rad(Longitude2)

GetDistance = _
ArcCos(Sin(Lat1) * Sin(Lat2) _
+ Cos(Lat1) * Cos(Lat2) _
* Cos(Lon2 - Lon1)) * 6378.388
End Function

Public Function DezimalGrad _
(Grad As Double, _
Min As Double, _
Sec As Double _
) As Double

DezimalGrad = Grad + Min / 60 + Sec / 3600
End Function

Public Function ArcCos(X As Double) As Double
ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
End Function

Public Function Deg2Rad _
(AngleDegrees As Double) As Double

Deg2Rad = AngleDegrees * Pi / 180
End Function

Public Function Pi() As Double
Pi = 4 * Atn(1)
End Function
' \\\ Ende Code

Hoffe da kann mir jemand weiterhelfen, wo da mein Problem liegen
könnte.

Vielen Dank für jede Antwort
 

Lesen sie die antworten

#1 W. Wolf
09/06/2010 - 07:37 | Warnen spam
Hallo Hubert
"Hubert Holler" schrieb

[...]
Wenn ich diese Zahlen aber mit meinem VB Code berechne, bekomme ich
44,54 km heraus. Andere Koordinaten funktionieren ohne Probleme und
decken sich mit den Ergebnissen der Internetseite.



[...]
Hoffe da kann mir jemand weiterhelfen, wo da mein Problem liegen
könnte.



Klicke mal auf die Beispiel-Webseite mit der
rechten Maustaste und zeige dir den Quellcode
der Seite an. Hier findest Du eine JS-Funktion
"berechnen". Da kannst Du vergleichen was die
anders als Du machen. JS-Code ist für einen
VB'ler gut lesbar.
Habe dir mal den Code rauskopiert:
function berechnen() {
var a_lat = document.getElementById("a_lat").value;
var a_long = document.getElementById("a_long").value;
var b_lat = document.getElementById("b_lat").value;
var b_long = document.getElementById("b_long").value;var
distanz = document.getElementById("distanz");
var eradius = 6378.137;
distanz.value =
Math.acos(Math.sin(b_lat/180*Math.PI)*Math.sin(a_lat/180*Math.PI) +
Math.cos(b_lat/180*Math.PI)*Math.cos(a_lat/180*Math.PI)*Math.cos(b_long/180*Math.PI-a_long/180*Math.PI)
) * eradius
}
Solltest deine VB-Fragen mit einem [VB6] im Betreff kennzeichnen!Schönen
Gruß
W. Wolf

Ähnliche fragen