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. Python:机器学习库 sklearn
  2. 《JavaScript设计与开发新思维》——1.7 JavaScript编程目标
  3. adr和ldr的区别
  4. Java动态代理之InvocationHandler最简单的入门教程
  5. C++学习之路 | PTA乙级—— 1028 人口普查 (20 分)(精简)
  6. Linux命令笔记(一)
  7. Recreate failovered primary database using Flashback Database
  8. JavaScript 框架库 - jQuery
  9. ElectronNetTest
  10. 12-Solidity8.0-view和pure区别
  11. 机器学习基础-统计学习-SLT
  12. 触摸开关模块,TTP223
  13. win time 修复服务器,Windows time 1058错误 修复
  14. Unity Shader - 伪次表面散射模拟
  15. 大数据是什么?1分钟了解大数据的概念!
  16. 服务器并发量估算公式和计算方法
  17. vue设置网页title
  18. 为什么程序中用双引号括起来的宏在预处理的时候是不会被宏替换的。
  19. gin实现简易服务器
  20. 微博话题正则表达式匹配 ##

热门文章

  1. Part 1 ——ActiveMQ 概述
  2. 写给不想做OJ题的C++学习者
  3. 网易笔试题 寻找第K大
  4. JdbcTemplate报空指针异常 已解决
  5. 论文阅读ICLR2020《ADAPTIVE STRUCTURAL FINGERPRINTS FOR GRAPH ATTENTION NETWORKS》
  6. UI5(十一)单元测试、与OPA的集成测试、Debugging 工具
  7. 腾讯 Code Review 规范出炉!你还敢乱写代码??
  8. FreeRTOS移植到STM32
  9. 类似京东商城客户端应用iOS源码
  10. APP 微信支付java后台代码(解决支付失败返回-1)