我試圖計算兩個地理位置之間的距離。我的問題是:我試圖像庫:Geocalc半正矢公式是這樣的:計算兩個地理位置之間的距離
public static final double RKilometers = 6371;
public static double calculationByDistance(double lat1, double lon1, double lat2, double lon2) {
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
lat1 = Math.toRadians(lat1);
lat2 = Math.toRadians(lat2);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
double c = 2 * Math.asin(Math.sqrt(a));
return RKilometers * c;
}
但我得到同樣的錯誤的價值觀與所有這些選項。對於短距離它完美的工作,但長距離它不會。
這是測試我所做的:
//distance between Barrow Island(Australia) and Tavatave(Madagascar)
assertEquals(calculationByDistance(20.82, 115.4, 18.15, 49.4), 6885, 20);
//get 6875.965169284442
//here is the problem
//distance between Rio Grande and Glasgow
assertEquals(calculationByDistance(32.05, 52.11, 55.83, 4.25), 10744, 20);
//get 4522.502442756569
是否有人知道哪裏是我的錯誤?謝謝!
我得到同樣的錯誤值:(4522而不是10744 – IrApp
@IrApp結果以英里爲單位,您可能需要更改地球半徑 – nafas
是的,我已經更改了km。 – IrApp