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

针对交叉口卡口数据处理难题,提出一种简化方法,通过已知中心点经纬度及假设的停车线距离来推算停车线经纬度。利用方位角和经纬度计算公式实现不同进口道轨迹数据的有效分离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要目的:

在处理卡口数据的过程中,遇到了一个问题:对于每个交叉口只知道其中心点的经纬度,而不知道每个进口道停车线的经纬度,对不同的进口道,难以将轨迹数据分开处理。
因此,采用了一种简化的方法,假设了每个交叉口中心点到每个停车线的距离为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是起始点经纬度信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值