【问题标题】:Getting driving direction from geolocation and direction on the road从地理位置和道路方向获取行车方向
【发布时间】:2020-03-03 09:51:45
【问题描述】:

我想计算在路上发生事故的车辆(例如汽车)的行驶方向。

我拥有的数据(来自警方报告)要么是地址(街道、号码、邮政编码、城市),要么是地理位置(经度、纬度)。从而 我将“行驶方向”作为变量,其中包含正值或负值。 积极的是,如果车辆继续行驶,街道编号会上升。负面的是街道号码在下降。

如何根据这些数据确定行驶方向(N°、E°)?

我已经找到了一种将街道地址更改为地理位置的方法,所以这应该没问题以及如何从两个位置获取行车方向(N°,E°)。

我想我可能需要第二个地理位置(例如,下一个或上一个地址的位置),但随后会出现道路转弯的问题,因此我需要另一种解决方案,例如在同一条道路上的给定地理位置前面找到一个点或可以为我提供该特定位置的道路方向的工具。

目的是了解太阳眩光对交通事故的影响,如果我能研究这个课题,或许可以挽救一些生命。

【问题讨论】:

标签: java python-3.x geolocation driving-directions


【解决方案1】:

可以通过计算同一道路上较早的点(例如事故发生前 50m)与事故本身之间的方位角来计算行驶方向。 公式是(在 Python 中):

def calculateBearing(lat1,lon1,lat2,lon2): 
    bearing = toDeg(math.atan2(math.sin(toRad(lon2-lon1))*math.cos(toRad(lat2)), \
    math.cos(toRad(lat1))*math.sin(toRad(lat2))- 
    math.sin(toRad(lat1))*math.cos(toRad(lat2)) \
    *math.cos(toRad(lon2-lon1))))
    #North = 0°, East=90°, South = (-)180°, West=-90°
    if float(bearing) < 0: 
        bearing = 360-abs(bearing) 
        #e.g. if bearing was -90, it is now 270
        #e.g. if bearing was -179, it is now 181
    return bearing

在顺时针方向的值从 0°(北)到 359°。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2017-10-19
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多