import com.github.pagehelper.util.StringUtil;
import java.text.DecimalFormat;/*** @Author LEAVES* @Date 2020/9/13* @Version 1.0*/
public class DealEN {/***  方法一     经纬度换算* @param jwd   经纬度* @param xsd   保留的小数位数* @return*/public static Double Dms2D(String jwd, String xsd){double xxx = 0;DecimalFormat df = new DecimalFormat(xsd);if(StringUtil.isNotEmpty(jwd)&&(jwd.contains("°"))){//如果不为空并且存在度单位//计算前进行数据处理jwd = jwd.replace("E", "").replace("N", "").replace(":", "").replace(":", "");double d=0,m=0,s=0;d = Double.parseDouble(jwd.split("°")[0]);//不同单位的分,可扩展if(jwd.contains("′")){//正常的′m = Double.parseDouble(jwd.split("°")[1].split("′")[0]);}else if(jwd.contains("'")){//特殊的'm = Double.parseDouble(jwd.split("°")[1].split("'")[0]);}//不同单位的秒,可扩展if(jwd.contains("″")){//正常的″//有时候没有分 如:112°10.25″s = jwd.contains("′")?Double.parseDouble(jwd.split("′")[1].split("″")[0]):Double.parseDouble(jwd.split("°")[1].split("″")[0]);}else if(jwd.contains("''")){//特殊的''//有时候没有分 如:112°10.25''s = jwd.contains("'")?Double.parseDouble(jwd.split("'")[1].split("''")[0]):Double.parseDouble(jwd.split("°")[1].split("''")[0]);}jwd = String.valueOf(d+m/60+s/60/60);//计算并转换为string
//             xxx = d+m/60+s/60/60;
//            String format = df.format(xxx);xxx =Double.parseDouble(df.format(d+m/60+s/60/60));//使用BigDecimal进行加减乘除
//            BigDecimal bd = new BigDecimal("60");
//            BigDecimal d = new BigDecimal(jwd.contains("°")?jwd.split("°")[0]:"0");
//            BigDecimal m = new BigDecimal(jwd.contains("′")?jwd.split("°")[1].split("′")[0]:"0");
//            BigDecimal s = new BigDecimal(jwd.contains("″")?jwd.split("′")[1].split("″")[0]:"0");//divide相除可能会报错(无限循环小数),要设置保留小数点
//            jwd = String.valueOf(d.add(m.divide(bd,6,BigDecimal.ROUND_HALF_UP)
//                    .add(s.divide(bd.multiply(bd),6,BigDecimal.ROUND_HALF_UP))));}return xxx;}/*** 方法二    经纬度换算* @param lng   经纬度* @return*/public static Double tranformPos(String lng){DecimalFormat df = new DecimalFormat("0.0000000000");String[] lntArr = lng.trim().replace("°", ";").replace("′", ";").replace("″", ";").replace("'", ";").replace("\"", "").split(";");Double result = 0.000000;for (int i = lntArr.length; i >0 ; i--) {double v = Double.parseDouble(lntArr[i-1]);if(i==1){result=v+result;}else{result=(result+v)/60;}}//double v = Double.parseDouble(df.format(result));return Double.parseDouble(df.format(result));}
}

❤️Java中经纬度换算❤️相关推荐

  1. java中经纬度使用与相关工具类

    经纬度互换 度(DDD):E 108.90593度 N 34.21630度 如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒?转换方法是将108.90 ...

  2. java 根据经纬度换算距离

    package com.yizhijob.cicada.utils;import java.math.BigDecimal; import java.math.RoundingMode; import ...

  3. Java中BigDecimal工具类(支持空值运算版)

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 前言 需要计算的场景绕不过去会使用BigDecimal类, ...

  4. 在 Java 中利用 redis 实现 LBS 服务

    前言 LBS(基于位置的服务) 服务是现在移动互联网中比较常用的功能.例如外卖服务中常用的我附近的店铺的功能,通常是以用户当前的位置坐标为基础,查询一定距离范围类的店铺,按照距离远近进行倒序排序. 自 ...

  5. java中的hashcode方法作用以及内存泄漏问题

    本文装载:http://hi.baidu.com/iduany/item/6d66dfc9d5f2da1650505870 hashCode()方法的作用&使用分析 一直以来都想写篇文章来说明 ...

  6. 详解JVM内存管理与垃圾回收机制5 - Java中的4种引用类型

    在Java语言中,除了基础数据类型的变量以外,其他的都是引用类型,指向各种不同的对象.在前文我们也已经知道,Java中的引用可以是认为对指针的封装,这个指针中存储的值代表的是另外一块内存的起始地址(对 ...

  7. JAVA中堆和栈的区别

    堆:(对象) 引用类型的变量,其内存分配在堆上或者常量池(字符串常量.基本数据类型常量),需要通过new等方式来创建. 堆内存主要作用是存放运行时创建(new)的对象. (主要用于存放对象,存取速度慢 ...

  8. java lbs_在 Java 中利用 redis 实现 LBS 服务

    前言 LBS(基于位置的服务) 服务是现在移动互联网中比较常用的功能.例如外卖服务中常用的我附近的店铺的功能,通常是以用户当前的位置坐标为基础,查询一定距离范围类的店铺,按照距离远近进行倒序排序. 自 ...

  9. Java中 LocalDate、LocalTime、LocalDateTime三个时间工具类的使用介绍

    Java中 LocalDate.LocalTime.LocalDateTime三个时间工具类的使用介绍 一.背景: 之前在做项目的过程中,对日期时间类没有一个系统的了解,总是在用的时候去搜索一下,解决 ...

最新文章

  1. Activity在有Dialog时按Home键的生命周期
  2. Flask-RESTful之请求处理
  3. SpringCloud基本模块分配搭建以及负载均衡
  4. android用java写文本框_Android 自动完成文本框的实例
  5. 软工小学期实践PART ONE
  6. [转载]强大的grep用法详解:grep与正则表达式
  7. mac IDEA java 如何进入到方法跳转 快捷键
  8. 测试电脑整机功耗软件,最真实的耗电!PConline权威整机功耗评测
  9. android 剪贴板增强工具,剪切板增强工具(ClipboardFusion Pro)
  10. 基站开站测试软件,基站开通流程及相关规范
  11. 纳米机器人最新进展(2021年)
  12. 2021-01-16 SONiC系统管理10 Telemetry
  13. 爸妈老了而我还未长大--《Coraline》观后感
  14. 多硬盘分区管理fdisk
  15. 基于FPGA的EMAC模块和FIFO模块
  16. iPhone 导入照片显示时间不是拍摄时间
  17. Ios5(三)屏幕的旋转和大小设置;
  18. 创建一个使用utf8字符集的数据库
  19. https://www.toutiao.com/a6457425756212429325/?tt_from=mobile_qqutm_campaign=client_shareapp=news_a
  20. Python jieba库的介绍与使用

热门文章

  1. java发送get请求400解决
  2. Vuex、axios以及跨域请求处理
  3. NVIDIA CUDA 高度并行处理器编程(一):CUDA简介
  4. 除了SCI-HUB,还有那么多免费外文文献网站,资源速取。
  5. 【Lingo】分段函数
  6. fastjson 序列化问题:Comparison method violates its general contract
  7. vmware虚拟机中ubuntu如何连接校园网netkeeper
  8. NUIST第十一届程序设计竞赛
  9. js版四舍六入五成双方法
  10. Android面试准备之Java基础