Hinweis: Diese Lösung funktioniert nur für kurze Entfernungen.
Ich habe versucht, domers Beitrag Formel für eine Anwendung zu verwenden und fand es gut für lange Strecken, aber in meinen Daten habe ich alle sehr kurze Distanzen verwendet, und domers Beitrag war sehr schlecht. Ich brauchte Geschwindigkeit, und die komplexeren Geo- kalden funktionierten gut, waren aber zu langsam. Also, wenn Sie Geschwindigkeit brauchen und alle Berechnungen, die Sie machen, sind kurz (vielleicht < 100m oder so). Ich fand diese kleine Annäherung großartig. Es nimmt an, dass die Welt flach ist. Beachte, dass du es nicht für lange Distanzen verwendest. Es funktioniert, indem du die Entfernung eines einzelnen Längen- und Breitengrads am gegebenen Breitengrad annähern und die Entfernung des Pythagoras in Metern zurückgeben kannst.
public class FlatEarthDist {
//returns distance in meters
public static double distance(double lat1, double lng1,
double lat2, double lng2){
double a = (lat1-lat2)*FlatEarthDist.distPerLat(lat1);
double b = (lng1-lng2)*FlatEarthDist.distPerLng(lat1);
return Math.sqrt(a*a+b*b);
}
private static double distPerLng(double lat){
return 0.0003121092*Math.pow(lat, 4)
+0.0101182384*Math.pow(lat, 3)
-17.2385140059*lat*lat
+5.5485277537*lat+111301.967182595;
}
private static double distPerLat(double lat){
return -0.000000487305676*Math.pow(lat, 4)
-0.0033668574*Math.pow(lat, 3)
+0.4601181791*lat*lat
-1.4558127346*lat+110579.25662316;
}
}
Warum nicht Math.toRadians() statt deg2rad()? Es wäre wirklich selbstenthaltend. –
@DavidG: Was ist die Einheit der Ausgabe? –
@Bala - Meine schlechte, ist es in den Kommentar auf den Code auf meinem Computer, aber hier fehlt. Entfernung in Metern. –