经纬度格式互转

经纬度格式分为三种

度: ( 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:

度→度分秒:
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;
}

你可能感兴趣的:(java,经纬度,格式,转换)