java经纬度曲线简化_JAVA 后台计算 经纬度 最短距离

1、 代码块

package com.ilogie.tms.util;

import java.io.IOException;

import java.math.BigDecimal;

import java.text.MessageFormat;

public class LocationUtils {

// 以下为 获得 两点之间最短距离

private static final BigDecimal EARTH_RADIUS = MathUtil.toBigDecimal(6378.137);//定义 地球半径

private static final BigDecimal MATH_PI = MathUtil.toBigDecimal(Math.PI);//定义Math.PI

/**计算弧长**/

private static BigDecimal getRed(BigDecimal big){

return big.multiply(MATH_PI).divide(MathUtil.toBigDecimal(180.0), BigDecimal.ROUND_DOWN);

}

/**

* 计算 两点 之间 的 最短距离

* 返回 数据 为 两点之间的 公里数

*/

public static BigDecimal getShortestDistance(BigDecimal lat1,BigDecimal lng1,

BigDecimal lat2,BigDecimal lng2 ){

logger.debug("lat1: " +lat1+", lng1:" + lng1);

logger.debug("lat2: " +lat2+", lng2:" + lng2);

BigDecimal radLat1 = getRed(lat1);

BigDecimal radLat2 = getRed(lat2);

BigDecimal a = radLat1.subtract(radLat2);

BigDecimal b = getRed(lng1).subtract(getRed(lng2));

Double sinA = Math.sin(a.doubleValue()/2);

Double sinB = Math.sin(b.doubleValue()/2);

Double cosA = radLat1.doubleValue();

Double cosB = radLat2.doubleValue();

Object obj = 2 * Math.asin(Math.sqrt(Math.pow(sinA,2) + Math.cos(cosA)*Math.cos(cosB)*Math.pow(sinB, 2)));

BigDecimal s = new BigDecimal(obj);

s = s.multiply(EARTH_RADIUS);

return format(s, 3);

}

public static BigDecimal format(BigDecimal big, int scale) {

scale = 0 > scale ? 0 : scale;

big = big.setScale(scale, BigDecimal.ROUND_HALF_UP);

return big;

}

public static void main(String[] args) {

// latlng 31.2147094,121.5193688 上海浦东新区社区服务中心

// latlng 31.226327,121.4969213 上海普陀区星云招商办事处、

// 地图上 2.57 测试 2.58

// latlg 28.1939842 113.0108862 长沙火车站

// latlg 22.636828 113.814606 深圳宝安国际机场

BigDecimal lat1 = MathUtil.toBigDecimal(28.1939842);

BigDecimal lng1 = MathUtil.toBigDecimal(113.0108862);

BigDecimal lat2 = MathUtil.toBigDecimal(22.636828);

BigDecimal lng2 = MathUtil.toBigDecimal(113.814606);

System.out.println("最短距离:"+getShortestDistance(lat1, lng1, lat2, lng2));

}

}

2、测试结果

67ea97e3ea92db4e9d08f4a524b7bba1.png

0eaabfba8af062dc6c9644f7479fb262.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java ee的小程序_在Java EE应用程序中实现自动重试

java ee的小程序最初,我想将此博客称为“ 具有拦截器驱动的重试策略的灵活超时 ”,但后来我认为它太“繁重”。 该声明以及修改后的标题应该(希望)使您了解此帖子可能谈论的内容;-) 触发 这篇文章主要由我在较早的一篇文章中收到…

Java变长数组笛卡尔积_Java 8中的流作为流的笛卡尔积(仅使用流)

小编典典在示例中传递流永远比传递列表更好:private static Stream cartesian(BinaryOperator aggregator, List... lists) {...}并像这样使用它:Stream result cartesian((a, b) -> a b,Arrays.asList("A", "B"),Arrays.asLis…

jboss eap 7_EAP 7 Alpha和Java EE 7入门

jboss eap 7红帽JBoss企业应用程序平台7(JBoss EAP 7)是基于开放标准构建并符合Java Enterprise Edition 7规范的中间件平台。 它建立在WildFly等经过验证的创新开源技术之上,这将使Java EE 7的开发更加容易。 这是有关如何开始使用最新ALPHA…

php 返回页面重复提交,php防止表单重复提交

后端防止重复提交的基本原理:服务器返回表单页面时,会先生成一个subToken保存于session,并把该subToen传给表单页面。当表单提交时会带上subToken,服务器获取表单信息判断session保存的subToken和表单提交subToken是否一致。若不一致或sessio…

spark在服务器运行示例_创建示例HTTPS服务器以获取乐趣和收益

spark在服务器运行示例通常,在开发或/和针对真实场景进行测试期间,我们(开发人员)面临着运行成熟的HTTPS服务器的需求,可能同时进行一些模拟。 在JVM平台上,除非您知道适合此工作的正确工具,否则…

为什么说php单线程,php单线程的缺点是什么?

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领…

sidecar_Spring Cloud Sidecar –节点初始化

sidecar在上一篇博客文章中,我描述了Sidecar应用程序如何用于在Eureka中注册Cassandra节点,更一般地,它可以用于在Eureka中注册任何非JVM应用程序。 在本文中,我将介绍应用程序如何查询Sidecar注册节点。 发现注册节点–初始化后…

php 对象 final,PHP7_OOP_对象重载以及魔术方法_对象遍历_final关键字

//对象遍历:class MyClass{public$var1 "value 1";public$var2 "value 2";public$var3 "value 3";protected$protected "pro var";private $private "privar";functioninterateVisible(){echo "MyClas…

供给测结构性改革内容_智能包装结构,提高可测性

供给测结构性改革内容有很多方法可以将整个应用程序分成多个包。 关于按功能或按层打包的优缺点的讨论可以在许多编程博客和论坛上找到。 我想从可测试性开始讨论这个主题,看看它是否会带来任何有意义的结果。 首先,让我们尝试描述我们通常希望跨不同层…

openshift_在OpenShift上扩展Java EE微服务

openshift这个小系列的前两个部分介绍了如何使用WildFly Swarm构建一个小型的JAX-RS服务并将其打包到Docker映像中 。 您学习了如何将此示例部署到OpenShift ,现在是时候对其进行一些扩展了。 为什么扩展很重要 基于微服务的体系结构的关键方面之一是分解为高性能的…

php 异步post,php – 使用POST的异步cURL

我正在制作一个命令行应用程序.在执行登录过程后,我需要同时通过cURL发出多个POST请求 – 这意味着传出请求必须发送会话ID等.事件链如下:>我用curl_init打开cURL连接>我使用curl_exec登录远程站点发送POST请求,并获得返回的HTML代码作为响应>我同时向同一…

log4j2 logger_简单一致的Log4j2 Logger命名

log4j2 logger在“ 带有Java 7方法句柄的可移植记录器名称”一文中 ,我写了关于使用Java 7的方法句柄来命名类的记录器的文章。 我在那篇文章中说过,这种方法的优点包括记录器命名的一致性,并避免了意外的代码复制和粘贴,这可能导…

java 子类tostring,JAVA中Object类的toString()方法,objecttostring

JAVA中Object类的toString()方法,objecttostringtoStringpublic String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。Objec…

openshift 部署_在OpenShift上部署Java EE微服务

openshift 部署我昨天用WildFly Swarm在博客上发布了有关简单JAX-RS微服务的博客。 您学习了如何使用Maven构建所谓的“胖子”,还使用Maven Docker插件对我们的微服务进行了Docker化并在Docker Machine上本地运行。 这是在本地测试事物的好方法。 到目前为止&#x…

在程序中实现java源文件编译,在程序中实现对java源文件编译的3种方法

一般情况下对java源文件的编译均是在代码完成后使用javac编译的,不管是使用 IDE还是直接使用命令行。这里要说的情况是比较特别的,就是在代码内动态的编译一些代码。比如你想通过在某个目录下通过放置一些源代码的方式来实现对程序功能的动态扩展&#x…

apache.camel_Apache Camel 2.16发布–十大亮点

apache.camelApache Camel 2.16于上周五发布。 这篇博客文章是我尝试在此新版本中进行前10名(加1作为奖励)的亮点。 1.动态到 来自骆驼用户的最常见的常见问题是,如何将消息发送到端点,uri应该使用消息中的动态值(例…

设计模式示例_责任链设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

edmonds算法matlab,匈牙利算法的matlab实现

匈牙利算法算法简介算法原理算法实现(附代码)测试算法简介下面摘用百度百科中的解释。匈牙利算法(Hungarian method)是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是二分图匹配最常见的算法&#xff0c…

php sqlsrv 分页,Php+SqlServer如何实现分页显示

PhpSqlServer如何实现分页显示$idmssql_connect("ddy","sa"," ") or die("连接不上");$dbmssql_select_db("ddy",$id);$query"select * from lr00 order by lr0012 desc";$resultmssql_query($query);if($result)…

java jooq_将Java EE与jOOQ结合使用的初学者指南

java jooqJava EE附带了自己的持久性API:JPA。 当您想要将RDBMS实体(表/关系)映射到Java实体(类)时,JPA最强大,主要遵循1:1映射策略。 其背后的思想是,业务逻辑通常不像关…