【工具】经纬度站间距计算表
- 格式:xls
- 大小:52.00 KB
- 文档页数:2


已知经纬度,求两地的距离 - 附“两地距离计算器”2011-07-26 11:01式中:α和θ分别是两地的纬度,北纬记为正,南纬记为负;β是两地的经度差;r是地球半径。
忽略各地海拔高度差异,认为地球是理想的球面。
求出的L 是两地的直线距离(地球的一条弦长),l 是两地的球面距离(沿地球表面的弧长)。
线性文本:k=√((sinθ-sinα )^2+(cosθ-cosα cosβ )^2+(cos α sinβ )^2;L=rk,l=2r sin^(-1)〖k/2〗公式注:arcsin得弧度值公式是我自己推导的。
式中的α和θ地位等价。
公式应用举例:求北京和悉尼之间的距离。
北京:39°54′57″N , 116°23′26″E悉尼:33°51′35.9″S , 151°12′40″E则:α=39°54′57″θ=-33°51′35.9″β=116°23′26″-151°12′40″=-34°49′14″代入公式中,查三角函数表,r取地球平均半径6371.004 千米,即可求得L = 8231.403 km l = 8949.214 km注意经度差的算法。
116°E和151°E相差151°-116°=35°,116°E和151°W相差360°-151°-116°=93°经度差35°或-35°或325°是等价的。
附两地距离计算器:此UI延续我造某的一贯风格。
比较易懂,操作说明我就不写了;如有问题可在本文下留言或联系我li.zaodie@。
下载地址:Distance.exe /self.aspx/z aodiesoft/distance.exe。
地球经纬度计算两点距离
纬度分为60分,每一分再分为60秒以及秒的小数。
纬度线投射在图上看似水平的平行线,但实际上是不同半径的圆。
有相同特定纬度的所有位置都在同一个纬线上。
赤道的纬度为0°,将行星平分为南半球和北半球。
纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。
位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。
纬度数值在0至30度之间的地区称为低纬地区,纬度数值在30至60度之间的地区称为中纬地区,纬度数值在60至90度之间的地区称为高纬地区。
赤道、南回归线、北回归线、南极圈和北极圈是特殊的纬线。
纬度1秒的长度:
地球的子午线总长度大约40008km。
平均:纬度1度= 大约111km
纬度1分= 大约1.85km
纬度1秒= 大约30.9m
1度=4分钟
地球赤道上环绕地球一周走一圈共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.12cos{1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]} 其中A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离。
利用excel计算两经纬度之间距离及角度1.按ALT+F11进入VBA编译器2.在工程管理器中插入“模块”,然后将下面代码粘贴到模块里'计算两经纬度之间距离=cal_long_lat(经度1,纬度1,经度2,纬度2)Public Function Cal_Long_Lat(ByVal long1 As Double, ByVal lat1 As Double, ByVal long2 As Double, ByVal lat2 As Double) As DoubleConst PI As Double = 3.1415926535Dim AngleLong1, AngleLat1, AngleLong2, AngleLat2 As DoubleAngleLong1 = long1 * PI / 180AngleLat1 = lat1 * PI / 180AngleLong2 = long2 * PI / 180AngleLat2 = lat2 * PI / 180Dim sinX, cosX As DoublesinX = Sin(AngleLat1) * Sin(AngleLat2)cosX = Cos(AngleLat1) * Cos(AngleLat2) * Cos(AngleLong2 - AngleLong1)x = sinX + cosXOn Error Resume Nextax = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)Cal_Long_Lat = 6368.16 * ax *1000End Function'计算两经纬度之间角度=cal_bearing(经度1,纬度1,经度2,纬度2)Public Function Cal_bearing(ByVal long1 As Double, ByVal lat1 As Double, ByVal long2 As Double, ByVal lat2 As Double) As DoubleConst PI As Double = 3.1415926535Dim AngleLong1, AngleLat1, AngleLong2, AngleLat2 As DoubleAngleLong1 = long1 * PI / 180AngleLat1 = lat1 * PI / 180AngleLong2 = long2 * PI / 180AngleLat2 = lat2 * PI / 180y = Sin(AngleLong1 - AngleLong2) * Cos(AngleLat2)x = Cos(AngleLat1) * Sin(AngleLat2) - Sin(AngleLat1) * Cos(AngleLat2) *Cos(AngleLong1 - AngleLong2)Cal_bearing = 360 - (Atan2(y, x) * 180 / PI + 360) Mod 360End FunctionPublic Function Atan2(ByVal y As Double, ByVal x As Double) As DoubleConst PI As Double = 3.1415926535If y > 0 ThenIf x >= y ThenAtan2 = Atn(y / x)ElseIf x <= -y ThenAtan2 = Atn(y / x) + PIElseAtan2 = PI / 2 - Atn(x / y)End IfElseIf x >= -y ThenAtan2 = Atn(y / x)ElseIf x <= y ThenAtan2 = Atn(y / x) - PIElseAtan2 = -Atn(x / y) - PI / 2End IfEnd IfEnd Function3.关闭VBA编译器,然后在单元格中使用公式Cal_Long_Lat(经度1,纬度1,经度2,纬度2)即可计算两经纬度之间的距离,公式Cal_bearing (经度1,纬度1,经度2,纬度2)可计算两经纬度之间的角度。