根据经纬度算两点距离
首先,你要想了解清楚经纬度的具体定义,看完后再往下看,便会一目了然。
将地球看成一个球体,A(WA,JA)、B(WB,JB)两点分别为两个点的位置,其中W为纬度,J为经度,O为球心,球半径为R,过A点画出A的纬度圈并与B所在的经度相交与点C,分别过B、C两点做球心O所在直线 的垂线相交与E、H,点B做垂线与CH的延长线相交于点D,OH与BC延长线相交与点F。添加辅助线后的两点距离示意图如图所示。
由示意图可知, H、E分别为A、B两点所在纬度圈的圆心,C点为与A点纬度相同,与B点经度相同,F为BC与HE延长线的交点,△OCF∽△DCB,因此:
因为△AHF为直角三角形,所以
由于A、C点在同一个纬度圈上,所以
设∠ACF为α,则设∠ACF为π-α,根据余弦定理得
综上则可以得出:
根据A、B两点经纬度可知:
带入公式(7),化简得
AB弧长(AB两点的距离)为
根据三角函数公
对(8)进行化简,得
具体过程如下图:(手算的,请见谅)
公式中的经纬度均用弧度表示,计算两点距离的核心代码如下:
public static double algorithm(double longitude1, double latitude1, double longitude2, double latitude2) { double Lat1 = rad(latitude1); // 纬度 double Lat2 = rad(latitude2); double a = Lat1 - Lat2;//两点纬度之差 double b = rad(longitude1) - rad(longitude2); //经度之差 double s = 2 * Math.asin(Math .sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(b / 2), 2)));//计算两点距离的公式 s = s * 6378137.0;//弧长乘地球半径(半径为米) s = Math.round(s * 10000d) / 10000d;//精确距离的数值 return s; } private static double rad(double d) { return d * Math.PI / 180.00; //角度转换成弧度 } |
根据经纬度算两点距离相关推荐
- android double值排序,android根据Double类型数据经纬度算出距离再根据距离实现排序功能...
前言 项目中用到全国的加油站数据加载 并根据经纬度算出距离 然后根据距离从小到大排序 主要是数据类型是Double 这里必须对数据进行封装 实现也不难 这里讲一下自己的实现方法和实现思路 效果图 先来 ...
- js根据经纬度计算两点距离
js根据经纬度计算两点距离 1.html <button type="button" οnclick="distanceByLnglat(116.95400,39. ...
- 百度地图根据经纬度计算距离php,详解js根据百度地图提供经纬度计算两点距离...
正常在使用百度地图时,我们可以通过BMap的实例对象提供的方法计算距离: var map = new BMap.Map('map_canvas'); map.getDistance(point1 ,p ...
- mySQL函数根据经纬度计算两点距离
mysql根据经纬度计算两点距离 定义自定义函数 DROP FUNCTION IF EXISTS func_calcDistance ; CREATE FUNCTION func_calcDistan ...
- js距离米转换为千米_js根据经纬度计算两点距离
地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为6356.755千米,平均半径6371.004千米.如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R.如 ...
- js 根据百度地图提供经纬度计算两点距离
正常在使用百度地图时,我们可以通过BMap的实例对象提供的方法计算距离: var map = new BMap.Map('map_canvas'); map.getDistance(point1 ,p ...
- 地球经纬度计算两点距离
现在利用--地球经纬度计算两点的距离--的基本原理计算气辉层所对应的经纬度距离. 基本原理如下: 纬度分为60分,每一分再分为60秒以及秒的小数.没错,60进制,纬度线投射在图上看似水平的平行线,但实 ...
- python 根据经纬度计算两点距离
def calcDistance(Lng_A, Lat_A, Lng_B, Lat_B): """ 根据两个点的经纬度求两点之间的距离 :para ...
- Java如何根据经纬度计算两点距离?
在实际开发中,计算两点距离的应用场景有很多,比如,钉钉的打卡功能,超过距离不允许打卡. 经纬度实体类 /** *Data是lombok的注解,提供类的get.set.equals.hashCode.t ...
- python通过经纬度算出距离_Python中如何利用经纬度进行距离计算
前些天由于工作中需求,要计算经纬度之间的距离,当我去网上搜索距离计算的方法时,发现很多文章中的方法乍一看都是很不同的,同是进行距离计算,为啥这么不一样呢?后来才发现问题在于很多文章没有进行相关的原理说 ...
最新文章
- linux重启查看日志及历史记录 查询原因
- sql 无法删除当前数据库,因为当前数据库正在使用
- 认识mysql总结_从根上理解Mysql - 读后个人总结1-搜云库
- BigDecimal丢失精度的坑
- 滴水穿石-07Java开发中常见的错误
- FastDFS多tracker配置
- 发现了一个美图看看软件的一个bug
- 分享SCI写作经验和一些工具
- 关于Linux内核vmlinuz、initrd.img和System.map
- python怎么编辑浏览器_怎样修改anaconda默认浏览器
- 在类中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)
- 零信任的过去、现在和未来
- 1665 完成所有任务的最少初始能量
- 《大江大河2》里的创业故事
- python 报 KeyError: ('coupon_type', 'occurred at index act_code')故障
- 【SCNU课堂笔记】计划任务、进程管理、Linux启动流程(未完待续)
- TGA图像文件格式分析
- 杨校老师课堂之CSDN博客查找博文汇总-目录
- DI(Dependence Injection)依赖注入
- 本科学历的我拿到了腾讯的Offer、给大家推荐零基础初学小白C++学习路线,走过路过不要错,动动小手看看吧!!!