經緯度格式轉換-(互轉 度轉度分秒 度分秒轉度……)

本文轉自https://blog.csdn.net/weixin_35959554/article/details/86006915

 

經緯度格式分爲三種
 度:              ( ddd.ddddd °)                 十進制小數部分(5位)                百度地圖,谷歌地圖,手機自帶gps經緯度輸出

度 . 分 :       (ddd°mm.mmm’ )             十進制小數部分(3位)               GPGGA

度 . 分 . 秒 :(ddd°mm’ss’’)                                                                              谷歌地圖

關係:
一度(°)等於60分鐘(’)等於3600秒(“):

整度(d)等於十進制的度的整數部分(dd):

分鐘(m)等於十進制的度的整數部分(dd)減去整數度(d)的60倍:

秒(s)等於十進制的度(dd)減去整數度(d)減分(M)除以60乘以3600:

經緯度代表的實際距離:
    經度1度 ≈111.13km 
    經度1分 ≈1.852km 
    經度1秒 ≈30.9m 

    緯度1度 ≈ 111.31km  
 緯度1分 ≈ 1.855km  
 緯度1秒 ≈30.9m 

度→度分秒:
lon= 104.07167°

度 = 104°

分 = 0.07167 *60 =4.3002(取整) = 4’

秒 = 0.3002 *60 =18.012(取整) =18’’

轉換後 lon = 104°4’18’’

	public static String D2Dms(double d_data){
        int d = (int)d_data;
        int m = (int)((d_data-d)*60);
        int s = (int)(((d_data-d)*60-m)*60);
        return  d+"°"+m+"′"+s+"″";
    }


度分秒→度:
lon=104°4’18’’

度 = 104+4/60+18/60/60 = 104.07167°(保留5位)

轉換後 lon =104.07167°

	public static double Dms2D(String dms_data) {
        if (!dms_data.contains("°")||!dms_data.contains("′")||!dms_data.contains("″"))
            return 0;
        double d = Double.parseDouble(dms_data.split("°")[0]);
        double m = Double.parseDouble(dms_data.split("°")[1].split("′")[0]);
        double s =Double.parseDouble(dms_data.split("°")[1].split("′")[1].replace("″", ""));
        return d+m/60+s/60/60;
    }


度轉度分以及度分轉度跟以上類似就不在累贅。
 

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