Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
haiflosse
Newbie
Newbie

Anmeldedatum: 23.03.2010
Beiträge: 15

Distanz zwischen Koordinaten berechnen
Verfasst am: 08.06.2010, 20:39

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/distanz-berechnen/aWQ9MTEz.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
_________________
 
haiflosse
Newbie
Newbie

Anmeldedatum: 23.03.2010
Beiträge: 15


Verfasst am: 09.06.2010, 13:48

Sorry, ich habe da falsche Angaben gemacht.

Die richtigen Koordinaten lauten aus dem nmea File:

$GPRMC,180050.231,A,4659.9948,N,01529.5661,E,29.64,321.57,050610,,*3F
$GPGGA,180051.231,4700.0014,N,01529.5585,E,1,08,0.8,385.3,M,43.7,M,0.0,0000*76
$GPGSA,A,3,31,30,04,14,12,29,09,02,,,,,1.9,0.8,1.6*36
$GPRMC,180051.231,A,4700.0014,N,01529.5585,E,29.52,321.76,050610,,*35

Daraus ergibt sich aus der ersten Zeile die Start-Daten:

Breite: 46.599948
Länge: 15.295661

und aus der letzten Zeile das Ziel:

Breite: 47.000014
Länge: 15.295585

Wenn ich nun diese Daten mit dem Internetlink http://www.mountainbiker.ch/inhalt/dista…n/aWQ9MTEz.html berechne und mit meinem VB Programm vergleiche komme ich immer auf ca. 42km.

Dies kann aber nicht sein, da ich nur 1 Sekunde mit dem Auto unterwegs war, wie man aus dem NMEA File erkennen kann.

Vielleicht hat da noch jemand einen Rat, oder kann es am Datenlogger liegen!
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: berechnen, koordinaten, distanz

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wichtig: Filebrowser z.B. für ein RAT 2118 13.01.2008, 11:14
Keine neuen Beiträge msgbox mit symbol _&_ z.B. yesno oder systemmodal 1078 26.09.2008, 23:16
Keine neuen Beiträge Abändern eines Ordnernamens (z.B. C:\Programme = Programme) 1196 23.04.2008, 15:33
Keine neuen Beiträge "Zurück-Funktion" mit Listview und z.B. DirView 734 17.04.2008, 13:30
Keine neuen Beiträge Fenster auslesen z.b von icq oder msn wer online kommt 1224 11.02.2008, 16:46
 



[ Time: 0.1502s ][ Queries: 85 (0.0220s) ][ GZIP on - Debug on ]