Hallo,
ich bin gerade dabei ein kleines Tool zu schreiben mit der man die Entfernung zweier Postleitzahlen berechnen kann.
Die Daten wie Längengrad und Breitengrad hab ich für jede Postleitzahl in einer Datenbank abgespeichert.
Das Problem liegt jetzt nun darin, dass ich immer ein falsches Ergebnis bekomme und ich habe keine Ahnung wieso :D.
Bekomme immer etwas mit 580 raus. es sollten aber um die 72 rauskommen.
Vielleicht findet ja jemand den Fehler
ich bin gerade dabei ein kleines Tool zu schreiben mit der man die Entfernung zweier Postleitzahlen berechnen kann.
Die Daten wie Längengrad und Breitengrad hab ich für jede Postleitzahl in einer Datenbank abgespeichert.
Das Problem liegt jetzt nun darin, dass ich immer ein falsches Ergebnis bekomme und ich habe keine Ahnung wieso :D.
VB.NET-Quellcode
- Dim ergebnis As Double
- Dim Breitegrad1 As String
- Dim breitengrad2 As String
- Dim Langengrad1 As String
- Dim langengrad2 As String
- 'Hier zieh ich mir die Daten aus der Datenbank und schreibe sie in die jeweilige Variable. Die Daten kommen in folgendem Format aus der Datenbank:
- '...........
- 'PLZ1
- Breitegrad1 = "50.3413"
- Langengrad1 ="7.7145"
- 'PLZ2
- breitengrad2 = "46.6272"
- langengrad2 = "13.3672222"
- 'Hier tausche ich den Punkt mit dem Komma, da wenn ich die variablen als Double initialisere solche Werte aus der Datenbank bekomme Breitegrad1 = 503413.0 oder Langengrad1 = 77145.0
- 'Deshalb initialisiere ich sie zuerst als String und caste die werte später in ein Double.
- Breitegrad1 = Breitegrad1.Replace(".", ",")
- breitengrad2 = breitengrad2.Replace(".", ",")
- Langengrad1 = Langengrad1.Replace(".", ",")
- langengrad2 = langengrad2.Replace(".", ",")
- Breitegrad1 = CDbl(Breitegrad1) / 180 * PI
- breitengrad2 = CDbl(breitengrad2) / 180 * PI
- Langengrad1 = CDbl(Langengrad1) / 180 * PI
- langengrad2 = CDbl(langengrad2) / 180 * PI
- ergebnis = Sin(Breitegrad1) * Sin(breitengrad2) + Cos(Breitegrad1) * Cos(breitengrad2) * Cos(langengrad2 - Langengrad1)
- ergebnis = Acos(ergebnis)
- ergebnis = ergebnis * 6378.388
Bekomme immer etwas mit 580 raus. es sollten aber um die 72 rauskommen.
Vielleicht findet ja jemand den Fehler