工具類之DistanceUtil

0、相關資料

餘弦在線計算

華爲的科學計算機三角函數,cos10爲什麼是負的?

Java Math.cos() 計算餘弦

1、正文

該工具類主要用於根據經緯度計算距離,其中需要注意的是 在第二個方法中的 Math.toRadians(latitude) 尤爲關鍵,因爲這是把緯度轉爲度數的。

例如:cos(10) = -0.839071529076452是一個負數 爲什麼? 10大概是3.18π,此處的10不是10度角

所以進行正餘弦計算的時候一定要轉換成角度。

唉,這些數據知識都給忘了,慚愧啊!

/**
 * Created by songzi522 on 2019/12/5.
 * 描述:根據經緯度計算距離
 */

public class DistanceUtil {

    /**
     * 沿經線(南北方向),經度不變,緯度變化約 1/111 度,這個要加減在緯度上
     * <p>
     * 經度上 1 千米 = 1 / 111 = 0.009009度
     */
    public static double oneKM2Lon = 0.009009;

    /**
     * 沿緯線(東西方向),緯度爲a,緯度不變,經度變化約 1/(111*COSa)度,這個要加減在經度上
     * <p>
     * 緯度上1千米 = 1 / 111*cos(緯度) 
     *
     * @param latitude 緯度
     * @return double值
     */
    public static double oneKM2Lat(double latitude) {
        // 緯度上1千米 = 1 / 111*cos(緯度) 
        // 22.479265463306174 小數位太多需要保留六位小數
        double oneKM2Lat = 1 / (111 * Math.cos(Math.toRadians(latitude)));
        LogUtils.e("oneKM2Lat:" + oneKM2Lat);
        BigDecimal bg = new BigDecimal(oneKM2Lat);
        LogUtils.e("222:" + bg.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue());
        return bg.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
    }


}

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章