根据地球上任意两点的经纬度计算两点间的距离
http://blog.chinaunix.net/u/6776/showart_694778.html
地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为6356.755千米,平均半径6371.004千米。如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。设第一点A的经纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90-纬度值(90-Latitude),南纬取90+纬度值(90+Latitude),则经过上述处理过后的两点被计为(MLonA, MLatA)和(MLonB, MLatB)。那么根据三角推导,可以得到计算两点距离的如下公式:
C = sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB) + cos(MLatA)*cos(MLatB)
Distance = R*Arccos(C)*Pi/180
这里,R和Distance单位是相同,如果是采用6371.004千米作为半径,那么Distance就是千米为单位,如果要使用其他单位,比如mile,还需要做单位换算,1千米=0.621371192mile
如果仅对经度作正负的处理,而不对纬度作90-Latitude(假设都是北半球,南半球只有澳洲具有应用意义)的处理,那么公式将是:
C = sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB)
Distance = R*Arccos(C)*Pi/180
以上通过简单的三角变换就可以推出。
如果三角函数的输入和输出都采用弧度值,那么公式还可以写作:
C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)
Distance = R*Arccos(C)*Pi/180
也就是:
C = sin(LatA/57.2958)*sin(LatB/57.2958) + cos(LatA/57.2958)*cos(LatB/57.2958)*cos((MLonA-MLonB)/57.2958)
Distance = R*Arccos(C) = 6371.004*Arccos(C) kilometer = 0.621371192*6371.004*Arccos(C) mile = 3958.758349716768*Arccos(C) mile
在实际应用当中,一般是通过一个个体的邮政编码来查找该邮政编码对应的地区中心的经纬度,然后再根据这些经纬度来计算彼此的距离,从而估算出某些群体之间的大致距离范围(比如酒店旅客的分布范围-各个旅客的邮政编码对应的经纬度和酒店的经纬度所计算的距离范围-等等),所以,通过邮政编码查询经纬度这样一个数据库是一个很有用的资源。
如何计算?
设某一城市有一个城市地标,可以视为城市的中心点 ,其经纬度已知。 分散在城市中心分别 现控制无人机分别自城市地标出发,依次探访和航拍环城公路上的重要设施。 无人机配置有GPS导航和电子罗盘。 自城市中心地标处控制无人机起飞。 1 计算任意经纬度点间的距离 用GPS测出两个点的经纬度后,如何计算这两个点之间的距离呢。用的是便携式GPS,只有经纬度显示,无坐标显示和输出。 设两点A、B的经、纬度分别为(jA,wA)(jB,wB),则半径为R的球面上两点间的最短距离(大圆弧)为: google maps的脚本里代码。 private const double EARTH_RADIUS = 6378.137; public static double GetDistance(double lat1, double lng1, double lat2, double lng2) ;该函数用IDL语言编写,利用GIS中根据两点经纬度计算距离公式 ;计算经纬度两点间的距离 ; length=radius * acos(sin(pts0[1]*!PI/180.0)*sin(pts1[1]*!PI/180.0)+cos(pts0[1]*!PI/180.0)*cos(pts1[1]*!PI/180.0)*cos(pts0[0]*!PI/180.0-pts1[0]*!PI/180.0)) end 另外在IDL中提供了计算两点距离的方法map_2points可以方便的计算不同单位(Miles,Meters)的距离,还可以通过设置不同的参数来得到不同的距离、角度值, Syntax: 具体可以参考IDL 的Help里面讲解 如果要算的距离是椭球面的距离,就难些。 因为大地线的方程是一个微分方程,所以大地线长度是对一个微分方程的开方的积分,无法写成简单的公式.通常是直接用差分代替微分,用求和代替积分算出,这是很严格的. 下面是近似地由大地经纬度求椭球面距离的逼近方法: 如两点在同一纬线上,距离为N*cos(phi)*(lambda2-lambda1)。 如两点在同一经线上,距离为M*dphi从phi1到phi2的积分。 其中N=a/sqrt(d), d=1-e*e*sin(phi)*sin(phi), M=a*(1-e*e)/[d*sqrt(d)], 其中长短轴a,b与扁率偏心率的关系是:a/b=1-f=sqrt(1-e*e). 把积分区域分成等分n小段,积分可以写成求和,既可算出。这也是严格的。 如两点不在同一经纬线上,且两点距离很近,则小区域的椭球面可以视为平面,于是两点的距离近似地是上面算出的距离的平方和的开方。如两点距离较远,把两点间的经纬差分成等分n小段,每小段的距离的和就是所求的距离。
2 计算偏移角。 完整的列子如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > alert(s); // //下面为两点间空间距离(非球面体) function Rad(d) </script> |
根据地球上任意两点的经纬度计算两点间的距离相关推荐
- 经纬度互换、换算成米、两点的经纬度计算两点间的距离
经纬度互换 度(DDD):E 108.90593度 N 34.21630度 如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒?转换方法是将108 ...
- ArcGIS操作系列14- 经纬度互换、换算成米、两点的经纬度计算两点间的距离
1. 经纬度互换 度(DDD):E 108.90593度 N 34.21630度 1.1 如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒? ...
- java获取一定距离以内的经纬度值_java 根据经纬度计算两地间的距离
现在网站上都流行贴出地理坐标位置,可以看出精度纬度,如果再结合GPS, 就可以定位出用户所在地的经纬度,自然可以计算出大概距离,下面是一段小代码,根据经纬度坐标直接计算出两地间的距离package c ...
- 给定经纬度计算距离_根据经纬度计算两地间的距离
import java.util.HashMap; import java.util.Map; public class MapDistance { private static double EAR ...
- JAVA 计算地球上任意两点(经纬度)距离
/*** 计算地球上任意两点(经纬度)距离* * @param long1* 第一点经度* @param lat1* 第一点纬度* @param long2* 第二点经度* @param lat2* ...
- 由经纬度计算地球上任意两点的距离
由经纬度计算地球上任意两点的距离 在地球上,城市的地理位置.GPS定位.一些地标的地理位置等是由经纬度给出的,本文主要根据两个地理位置的经纬度,来计算两个地理位置之间的距离. %计算城市间距离 zb= ...
- 地球经纬度计算两点距离
现在利用--地球经纬度计算两点的距离--的基本原理计算气辉层所对应的经纬度距离. 基本原理如下: 纬度分为60分,每一分再分为60秒以及秒的小数.没错,60进制,纬度线投射在图上看似水平的平行线,但实 ...
- Java根据经纬度计算两点之间的距离
1. 前言 在我们平时使用美团,饿了么等app进行订餐,或者使用猫眼进行订电影票的时候,都有一个距离的排序,表明该家店距离我们当前的位置,这种基于地理位置的服务,统一被称为LBS(Location ...
- 地理大圆距离 C语言,通过经纬度计算两点之间的距离
2019独角兽企业重金招聘Python工程师标准>>> 项目里有一个需求是计算两台机器之间的距离,有了这两台机器的经纬度,距离就很好计算了. 有一个 球面余弦定律 可以用来可以计算球 ...
最新文章
- css 垂直居中的几种方式
- QT-- MainWindow外的cpp文件调用ui
- asp IIS部署An error occurred on the server when processing the URL错误提示解决
- java爬取单张图片
- 最新版 Enterprise Library 企业库 V4.1 中文学习手册
- python if elif else
- Word字体修改(罚抄,抄作业专用)
- 第一次用AX2009正式版!
- 在Linux上配置xampp后远程访问域名报错
- 移动端图片上传老失败
- 拓端tecdat|在PYTHON中进行主题模型LDA分析
- 《别做“正常”的傻瓜(全新第2版)》
- 自然语言处理技术发展简史
- Ubuntu下WPS中文字体显示问题
- SCC计算机控制,计算机控制系统功能之监督控制-电脑自学网
- 浏览器 本地html 图片不显示,网页不显示图片怎么解决?
- 【HTML——线条雨落】(效果+代码)
- 腾讯云LAMP搭建Discuz 域名解析
- 夜刃CTF小组招募志同道合的CTFer
- repo init 时提示File “/root/....../.repo/repo/main.py“, line 79