[最新]excel计算两经纬度之间距离宏

[最新]excel计算纬度之间距离
利用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 Double
Const PI As Double = 3.1415926535
Dim AngleLong1, AngleLat1, AngleLong2, AngleLat2 As Double
AngleLong1 = long1 * PI / 180
AngleLat1 = lat1 * PI / 180
AngleLong2 = long2 * PI / 180
AngleLat2 = lat2 * PI / 180
Dim sinX, cosX As Double
sinX = Sin(AngleLat1) * Sin(AngleLat2)
cosX = Cos(AngleLat1) * Cos(AngleLat2) * Cos(AngleLong2 - AngleLong1)
x = sinX + cosX
On Error Resume Next
ax = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)
Cal_Long_Lat = 6368.16 * ax
End 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 Double
Const PI As Double = 3.1415926535
Dim AngleLong1, AngleLat1, AngleLong2, AngleLat2 As Double
AngleLong1 = long1 * PI / 180
AngleLat1 = lat1 * PI / 180
AngleLong2 = long2 * PI / 180
AngleLat2 = lat2 * PI / 180
y = 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 360
End Function
Public Function Atan2(ByVal y As Double, ByVal x As Double) As Double
Const PI As Double = 3.1415926535
If y > 0 Then
If x >= y Then
Atan2 = Atn(y / x)
ElseIf x <= -y Then
Atan2 = Atn(y / x) + PI
Else
Atan2 = PI / 2 - Atn(x / y)
End If
Else
If x >= -y Then
经纬360Atan2 = Atn(y / x)
ElseIf x <= y Then
Atan2 = Atn(y / x) - PI
Else
Atan2 = -Atn(x / y) - PI / 2
End If
End If
End Function
3. 关闭VBA编译器,然后在单元格中使用公式
Cal_Long_Lat(经度1,纬度1,经度2,纬度2)
即可计算两经纬度之间的距离,公式Cal_bearing
(经度1,纬度1,经度2,纬度2)可计算两经纬
度之间的角度。

本文发布于:2024-09-22 14:33:48,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/365487.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:计算   经纬度   距离   编译器   纬度   管理器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议