经纬度格式转换-(互转 度转度分秒 度分秒转度……)

经纬度格式转换-(互转 度转度分秒 度分秒转度……)经纬度格式分为三种 度 ddd ddddd 十进制小数部分 5 位 百度地图 谷歌地图 手机自带 gps 经纬度输出度 分 ddd mm mmm 十进制小数部分 3 位 GPGGA 度 分 秒 ddd 经纬度格式转换

大家好,欢迎来到IT知识分享网。

经纬度格式分为三种

 度:              ( 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(保留8位,保留越多越精准,但位置信息已经够精确了) =18.012’’

转换后 lon = 104°4’18.012’’

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

度分秒→度:

lon=104°4’18.012’’

度 = 104+4/60+18.012/60/60 = 104.07167°(保留8位)

转换后 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 keep8Decimal(d+m/60+s/60/60); }

 度→度分:

lon= 104.07167°

度 = 104°

分 = 0.07167 *60 =4.3002(保留3位) = 4.3’

转换后 lon = 104°4.3’

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

度分→度:

lon=104°4.3’

度 = 104+4.3/60 = 104.07167°(保留8位)

转换后 lon =104.07167°

 public static double Dm2D(String dms_data) { if (!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]); return keep8Decimal(d+m/60); }

使用的其他方法:

 //保留8位小数 public static double keep8Decimal(double d){ BigDecimal bd=new BigDecimal(d); double d1=bd.setScale(8,BigDecimal.ROUND_HALF_UP).doubleValue(); return d1; } //保留3位小数 public static double keep3Decimal(double d){ BigDecimal bd=new BigDecimal(d); double d1=bd.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue(); return d1; }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128214.html

(0)
上一篇 2025-09-02 14:33
下一篇 2025-09-02 14:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信