經緯度格式互轉-(度轉度分秒 度分秒轉度……)
阿新 • • 發佈:2019-01-09
經緯度格式分為三種:
度: ( 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 String D2Dms(double d_data){
int d = (int)d_data;
int m = (int)(d_data-d)*60;
int s = (int)(d_data-d-m/60)*3600;
return d+"°"+m+"′"+s+"″";
}
度分秒→度:
lon=104°4’18’’
度 = 104+4/60+18/60/60 = 104.07167°(保留5位)
轉換後 lon =104.07167°
public 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]);
return d+m/60+s/60/60;
}
度轉度分以及度分轉度跟以上類似就不在累贅。