vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Distanz zwischen Koordinaten berechnen 
Autor: Hubert Holler
Datum: 08.06.10 22:44

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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Distanz zwischen Koordinaten berechnen4.037Hubert Holler08.06.10 22:44
Re: Distanz zwischen Koordinaten berechnen2.875Zardoz09.06.10 05:45
Re: Distanz zwischen Koordinaten berechnen2.802Hubert Holler09.06.10 07:59
Re: Distanz zwischen Koordinaten berechnen3.552RobertS09.06.10 11:34
Re: Distanz zwischen Koordinaten berechnen2.876Hubert Holler09.06.10 15:49
Re: Distanz zwischen Koordinaten berechnen3.030BAGZZlash26.07.10 20:46
Re: Distanz zwischen Koordinaten berechnen2.828Level22027.07.10 16:03

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel