根据两地点经纬度如何计算两地之间的距离?用啥方式计算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据两地点经纬度如何计算两地之间的距离?用啥方式计算相关的知识,希望对你有一定的参考价值。

1、地球赤道上环绕地球一周走一圈共40075.04公里,而@一圈分成360°,而每1°(度)有60,每一度一秒在赤道上的长度计算如下:
40075.04km/360°=111.31955km
111.31955km/60=1.8553258km=1855.3m
而每一分又有60秒,每一秒就代表1855.3m/60=30.92m
任意两点距离计算公式为
d=111.12cos1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]
其中A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离。
2、分为3步计算:
第1步
分别将两点经纬度转换为三维直角坐标:
假设地球球心为三维直角坐标系的原点,球心与赤道上0经度点的连线为X轴,球心与赤道上东经90度点的连线为Y轴,球心与北极点的连线为Z轴,则地面上点的直角坐标与其经纬度的关系为:
x=R×cosα×cosβ
y=R×cosα×sinβ
z=R×sinα
R为地球半径,约等于6400km;
α为纬度,北纬取+,南纬取-;
β为经度,东经取+,西经取-。
第2步
根据直角坐标求两点间的直线距离(即弦长):
如果两点的直角坐标分别为(x1,y1,z1)和(x2,y2,z2),则它们之间的直线距离为:
L=[(x1-x2)^2+(y1-y2)^2+(z1-z2)^2]^0.5
上式为三维勾股定理,L为直线距离。
第3步
根据弦长求两点间的距离(即弧长):
由平面几何知识可知弧长与弦长的关系为:
S=R×π×2[arc
sin(0.5L/R)]/180
上式中角的单位为度,1度=π/180弧度,S为弧长。
3、1度的实际长度是111公里。但纬线的距离会越考两端越小,他的距离就会变成111乘COS纬度数,经度不变。
4、南北方向算出两点纬度差,一度等于60海里,1分等于1海里,海里与公里换算关系1海里等于1.852公里。东西方向量出距离到两点间纬度附近量出纬度差,得出海里数,再乘以1.852换算成公里。可按直角三角形原理求出两点间距离。
5、度的实际长度是111公里。但纬线的距离会越考两端越小,他的距离就会变成111乘COS纬度数,经度不变(如果在同一经度)
参考技术A 同纬度不同经度
(赤道除外)h
x
111
x
cosd=g
(h=两地经度差
d=当地的地理纬度
g=实际距离) 跨纬度的需要构造个三角 比如说ab两点不同经纬度(a经b纬) 那就先算出与a点共线的那条纬度b'的距离,在算a到b'的距离,在用勾股定理就可以得出简单的说可用以下通用公式:地球上任两点间距离公式:地球上任两点,其经度分别为a1、a2(e正,w负),纬度分别为b1、b2(n正,s负).令a0=(a1-a2)÷2,b0=(bi-b2)÷2 f=√sinb0×sinb0+cosb1×cosb2×sina0×sina0 则 1、两点间空间直线距离=2fr 2、两点间最小球面距离=arcsinf÷90°×∏r(角度) 3、两点间最小球面距离=arcsinf×2r(弧度) 说明:e、w、n、s=东西南北;r=地球半径;√=根号;∏=圆周率.
参考技术B
地球赤道上环绕地球一周走一圈共40075.04公里,而一圈分成360°,而每1°(度)有60,每一度一秒在赤道上的长度计算:
40075.04km/360°=111.31955km。
111.31955km/60=1.8553258km=1855.3m。
每一分又有60秒,每一秒就代表1855.3m/60=30.92m。
任意两点距离计算公式为:
d=111.12cos1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]
A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离。
经纬度是经度与纬度的合称组成一个坐标系统。称为地理坐标系统,它是一种利用三度空间的球面来定义地球上的空间的球面坐标系统,能够标示地球上的任何一个位置。
纬线和经线一样是人类为度量方便而假设出来的辅助线,定义为地球表面某点随地球自转所形成的轨迹。任何一根纬线都是圆形而且两两平行。纬线的长度是赤道的周长乘以纬线的纬度的余弦,所以赤道最长,离赤道越远的纬线,周长越短,到了两极就缩为0。从赤道向北和向南,各分90°,称为北纬和南纬,分别用"N"和"S"表示。

道路距离,两地之间的实际距离

【中文标题】道路距离,两地之间的实际距离【英文标题】:Road distance,Actual distance between two places 【发布时间】:2010-11-10 13:07:02 【问题描述】:

我想在用户开始驾驶之前计算两个位置[用户指定位置]之间的驾驶距离。我也在 CLLocation 中使用了许多公式和 getDistanceFrom,但我无法获得这些位置之间的完美行驶距离。

实际距离和计算距离相差很大。

请帮我计算两个地点之间的行车距离。 如何使用 Google Maps API 计算行车距离?

我已经使用 regexkitlite 在谷歌地图上显示两个地方之间的道路路径。但是我无法计算路径距离。

如果你有任何代码/链接,请发给我。

提前谢谢....

【问题讨论】:

getDistanceFrom 只会获得“空中”英里的距离,不考虑道路。 【参考方案1】:

参见谷歌地图的directions API

您只需发出一个 HTTP 请求:http://maps.googleapis.com/maps/api/directions/output?parameters

答案可以是 jsonxml。你会在答案中找到距离

【讨论】:

【参考方案2】:

如果您有两个 LatLong,您可以计算它们之间的直接距离;但是,由于您需要行车路线(而不是像乌鸦飞的那样),因此您需要访问街道中心线,这样您就可以计算行程中每条“腿”的距离。

Google 地图可能会提供行车路线以及路线距离,您需要查看文档以了解该特定功能。

编辑

再看一遍,这似乎在 API 上可能不可用(截至 2006 年),但此处发布了解决方法:http://groups.google.com/group/Google-Maps-API/msg/4dc2fad4f74e3314

【讨论】:

【参考方案3】:

使用 Core Location API,它只会为您提供直线上两点之间的距离 - 大多数道路都不是,因此距离会是错误的。

【讨论】:

以上是关于根据两地点经纬度如何计算两地之间的距离?用啥方式计算的主要内容,如果未能解决你的问题,请参考以下文章

mysql中怎么根据经纬度计算距离

计算两个经纬度之间的距离

怎么知道经纬度算距离,

用经纬度计算两地之间的距离, C 语言实现。

道路距离,两地之间的实际距离

知道经纬度怎么算距离?