经纬度偏移函数(根据角度及距离进行偏移)

程序要求

新建一个VBA函数,用于计算经纬度偏移,并提供偏移后的经度和纬度,函数要求如下:
1、变量1:
偏移前的经度,如116.4325 
2、变量2:
偏移前的纬度,如23.3425 
3、变量3:
先填写个偏移角度,角度以正北为0度,瞬顺时针到359度 
4、变量4:
偏移的长度,以米为单位 
5、变量5:
填写返回的类型,偏移后的经度为1,偏移后的纬度为2 返回值:返回偏移后的经度或者纬度
函数:CalcLatLonOffset(经度,纬度,角度,以米为单位的位移量,返回的类型)

实现的代码

 Function CalcLatLonOffset(lon As Double, lat As Double, angle As Double, distance As Double, returnType As Integer) As Double

'该函数用于按照某个角度和某个位移计算经纬度的偏移,并返回偏移后的经度和纬度
'示例CalcLatLonOffset(经度,纬度,角度,以米为单位的位移量,返回的类型)
’ lon: 经度
’ lat: 纬度
’ angle: 偏移角度,以正北为0度,顺时针到359度
’ distance: 偏移的长度,以米为单位
’ returnType: 返回的类型,经度为1,纬度为2

'将角度转为弧度
Dim radAngle As Double
radAngle = angle * WorksheetFunction.pi / 180#

'计算纬度1度对应的距离
Dim latPerM As Double
latPerM = 1# / 111000#

'计算经度1度对应的距离
Dim lonPerM As Double
lonPerM = 1# / (111000# * Cos(lat * WorksheetFunction.pi / 180#))

'计算距离对应的经度和纬度偏移
Dim latOffset As Double
Dim lonOffset As Double
latOffset = distance * Cos(radAngle) * latPerM
lonOffset = distance * Sin(radAngle) * lonPerM

'根据返回类型返回经度或者纬度
If returnType = 1 Then
    CalcLatLonOffset = lon + lonOffset
ElseIf returnType = 2 Then
    CalcLatLonOffset = lat + latOffset
Else
    CalcLatLonOffset = 0#
End If

End Function

使用方法

按alt+F11(键盘上如果有FN键 ,还需要同时按FN)会打开VBE窗口,在窗口中点插入 - 模块。把下面的代码复制粘贴到右侧的空白区域中

在这里插入图片描述

实现结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有小数点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值