【已知一点经纬度和距离,计算另一点的经纬度】

根据一点经纬度和距离,计算另一点的经纬度


计算摄像头到目标检测点得距离d,详见: https://blog.csdn.net/qq_41694461/article/details/124473059.

计算代码

直接上干货

# 距离dis的单位是米,deg是方位角,需要化为弧度。lon1,lat1是起始点经纬度信息
def calc_situation(long1, lati1, deg, dis):
    arc = 6371.393*1000
    long2 = long1 + dis*math.sin(deg)/(arc*math.cos(lati1)*2*math.pi/360)
    lati2 = lati1 + dis*math.cos(deg)/(arc*2*math.pi/360)
    return long2,lati2

推理过程

在这里插入图片描述
假设方位角是α, 那从点1到点2的平移距离分别如下所示d*sinα, d*cosα。 这里正北为0度。基中点1经纬度(long1, lati1)和距离d是已知的。 求点2的经纬度(long2,lati2)

点1所在的纬度,其实也是一个有用的角度,通过它可以知道当前纬度的那个切面的半径长度,下图红线所示用arc表示。这里假设地球是近似球体,赤道圆的半径是ARC,侧从下图中可以得出:

就是知道φ是当前点1的纬度。则当前的纬度的切面半径 arc = ARC*cos(φ) ,其中φ其实就是当前的方位的纬度值,即arc = ARC*cos(lat1)
在这里插入图片描述
我们再讨论下地球半径,其实地球是一个椭球体。

极半径 从地心到北极或南极的距离,大约3950英里(6356.9088千米)(两极的差极小,可以忽略)。

赤道半径 是从地心到赤道的距离,大约3963英里(6377.830千米)。

如果只是做近似计算的,我们这里取平均距离,平均半径 大约3959英里(6371.393千米) 。这个数字是地心到地球表面所有各点距离的平均值。

这里取平均半径那么ARC=6371.393*1000(米)

计算推导

  1. 计算第二点的经度,就是 水平平移的距度(dsinα)除以 当前纬度切面周长(2πarc),再每乘以360度) ,就知道了水平横向平移了多少度,再加上long1,就是long2的值了。

  2. 计算第二点的纬度,比较简单,就是, 垂直平移的距离d(d*cosα)除以 地球纵向周长,再乘上360度,就知道纵向平移了多少度,再加上lat1,就知道lat2的值了。

long2 = long1 + d*sinα/[ARC*cos(lat1)*2π/360]
lati2 = lati1 +d*cosα/ (ARC*2π/360)
注意:α是方位角,需要化为弧度

PYthon代码实现:

# 距离dis的单位是米,deg是方位角,需要化为弧度。lon1,lat1是起始点经纬度信息
def calc_situation(long1, lati1, deg, dis):
    arc = 6371.393*1000
    long2 = long1 + dis*math.sin(deg)/(arc*math.cos(lati1)*2*math.pi/360)
    lati2 = lati1 + dis*math.cos(deg)/(arc*2*math.pi/360)
    return long2,lati2
  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值