Distanz zwischen Geokoordinaten
Übersicht

![]() |
IguanBetreff: Distanz zwischen Geokoordinaten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo allerseits!
Vielleicht könnt ihr mir ein Tip geben: Ich möchte die Distanz (Luftlinie) zwischen zwei geokoordinaten berechnen. Dazu habe ich die Berechnungsformel von http://www.koordinaten.de/info...rmel.shtml in BB umgesetzt: Code: [AUSKLAPPEN] Print CalculateDistanceKM#(47.4595,8.40126,47.4595,8.40326) waitkey end Function CalculateDistanceKM#(lat1#,lon1#,lat2#,lon2#) Pi1# = 3.141592654 R# = 6378.137 ;// Erdradius a# = Sin(lat1#) * Sin(lat2#) + Cos(lat1#) * Cos(lat2#) * Cos((lon2#-lon1#)) c# = ACos(a#) /180 * Pi1# d# = R# * c# Return d# End Function Allerdings ergibt das bei mir 0.0 anstelle 0.150 Km. Wenn ich die Koordinaten von http://www.koordinaten.de/info...tenmodell/ (siehe unter dem Titel "Das Kugelphänomen") verwende dann kommt das richtige Resultat raus, nähmlich 6853 km. Hier der Code: Code: [AUSKLAPPEN] Print CalculateDistanceKM#(50,8.27,50,-97.25) waitkey end Function CalculateDistanceKM#(lat1#,lon1#,lat2#,lon2#) Pi1# = 3.141592654 R# = 6378.137 ;// Erdradius a# = Sin(lat1#) * Sin(lat2#) + Cos(lat1#) * Cos(lat2#) * Cos((lon2#-lon1#)) c# = ACos(a#) /180 * Pi1# d# = R# * c# Return d# End Function Was mache ich falsch? Entfernungen von ca. 100m sollten doch mit der Genauigkeit von Floats berechenbar sein? ![]() mfg Iguan PS: Hier kann man das Ergebnis kontrollieren: http://www.mapit.ch/tools/point/distance.html |
||
- Zuletzt bearbeitet von Iguan am Di, Jul 24, 2012 21:23, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schreibe bei der Division /180.0 anstatt /180 - denn sonst handhabt BB das als Integerdivision und schneidet dabei Nachkommastellen einfach ab.
mfG Holzchopf Edit Sorry, war ein Irrtum meinerseits. ACos ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
- Zuletzt bearbeitet von Holzchopf am Di, Jul 24, 2012 21:27, insgesamt einmal bearbeitet
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab jetzt 180.0 gemacht, aber da kommt leider immer noch 0.0 raus. | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
liegt in der tat an der ungenauigkeit von floats. Da bringt es auch nix dass du ein pi1 definierst, pi ist schon so genau wei es unter blitz sein kann.
EDIT: wenn ich es unter BMax mit Doubles laufen lasse kommt das erwartete Ergebnis raus. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
- Zuletzt bearbeitet von BladeRunner am Di, Jul 24, 2012 21:43, insgesamt einmal bearbeitet
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann man das irgendwie umgehen (bestimmte berechnungsweise)? auf der Website http://www.mapit.ch/tools/point/distance.html geht das doch... hat html / java "bessere" Floats? | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Java wird doubles verwenden.
Du könntest einen Stringrechner nutzen, ist aber eine eher langsame und aufwändige Geschichte. Ansonsten keine Chance, so wie ich das sehe. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Mr.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe deinen Code gerade in BlitzMax ausprobiert, dort liefert er tadellos das Ergebnis "0.150517806", du könntest es höchstens umgehen, indem du die Berechnung in Integer belässt und nur dass Ergebnis dividiert ausgibst. Das ist allerdings in diesem Fall nicht ganz so einfach. | ||
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könntest du das bitte etwas genauer erklären? Wenn ich cos() oder sin() mit Integer berechne kommt doch "0" raus..? ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deswegen geht das was hyde meint ja so auch nicht, weshalb er selbst sagt dass dies in diesem Fall eher schwer wird. Such im Codearchiv einen Stringrechner und mach es damit. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm... leider beherschen die Stringrechner im Codearchiv keine Kommazahlen und auch keine funktionen wie cos() sin() und acos() ![]() |
||
![]() |
Mr.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe hier leider kein BB, aber du könntest probieren herauszufinden wo die Ungenauigkeit am größten ist. Sollte sie wirklich im Bereich der Sin / Cos Befehle auftreten ist es sehr ungünstig, dann wäre deine Genauigkeit auf 1km eingeschränkt. Sollte sie aber woanders auftreten hättest du eventuell noch eine Chance. Am besten arbeitest du mit Zwischenergebnissen und lässt dir die Alternativen parallel ausgeben. | ||
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, so wies aussieht muss ich wohl das Problem in einer anderen Programmiersprache lösen... ![]() trotzdem vielen Dank!! |
||
sddsmhr |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BladeRunner hat Folgendes geschrieben: liegt in der tat an der ungenauigkeit von floats. Da bringt es auch nix dass du ein pi1 definierst, pi ist schon so genau wei es unter blitz sein kann. In diesem Fall könnte eine bessere Kondition des Algorithmus Abhilfe schaffen, falls möglich...
Vielleicht schaue ich mich das später auch noch einmal an. Muss aber erst einmal wech... |
||
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
oder du lässt dir eine exe datei per BMax mit startparametern und rückgabe
kompilieren und verwendest diese irgendwie aus BB heraus. Grüße |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group