根据起始点经纬度、距离、方位角计算目标点经纬度的方法

主要目的:

在处理卡口数据的过程中,遇到了一个问题:对于每个交叉口只知道其中心点的经纬度,而不知道每个进口道停车线的经纬度,对不同的进口道,难以将轨迹数据分开处理。
因此,采用了一种简化的方法,假设了每个交叉口中心点到每个停车线的距离为m米,根据相邻的两个交叉口中心经纬度,计算了路段方位角,进而根据交叉口中心点到每个停车线的距离、路段走向方位角、路段中心店经纬度这三个信息,计算出了每个进口道停车线的经纬度。其中用到的代码如下:

1.根据起始点经纬度、目标点经纬度计算它们之间的方位角

def calc_azimuth(lat1, lon1, lat2, lon2):
    lat1_rad = lat1 * math.pi / 180
    lon1_rad = lon1 * math.pi / 180
    lat2_rad = lat2 * math.pi / 180
    lon2_rad = lon2 * math.pi / 180
    y = math.sin(lon2_rad - lon1_rad) * math.cos(lat2_rad)
    x = math.cos(lat1_rad) * math.sin(lat2_rad) - \
        math.sin(lat1_rad) * math.cos(lat2_rad) * math.cos(lon2_rad - lon1_rad)
    brng = math.atan2(y, x) * 180 / math.pi
    return float((brng + 360.0) % 360.0)

2.根据起始点经纬度、距离、方位角计算目标点经纬度

参考了这篇博客的计算方法:https://blog.csdn.net/sinat_32857543/article/details/107207553

def calc_situation(lon1, lat1, deg, dis):
    arc = 6371.393*1000
    lon2 = lon1 + dis*math.sin(deg)/(arc*math.cos(lat1)*2*math.pi/360)
    lat2 = lat1 + dis*math.cos(deg)/(arc*2*math.pi/360)
    return lon2,lat2

注意:距离dis的单位是米,deg是方位角,需要化为弧度。lon1,lat1是起始点经纬度信息。

  • 7
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值