我需要落实司机是否超速行驶。GPS信息每秒从安装在驾驶员驾驶的车辆中的GPS设备上传,如下所示。
[(37.165224, 127.2354123), ... ,(37.123456, 127.123456)]
此外,有速度限制信息为每个roal在网格格式如下.
(MinX, MaxX, MinY, MaxY, Speed Limit)
[37.123456, 37.123458, 127.123456, 127.123458, 80]
[37.123457, 37.123458, 127.123457, 127.123459, 70]
...
该网格信息具有重叠部分,其是由立交桥引起的信息。
因此,如果驾驶员被包括在多个网格信息中,则决定选择对应的速度限制的最大速度作为速度限制。
例如,在上述信息中,如果驾驶员包括在(37.123457, 127.123457)
中,则根据网格信息,速度限制为80
或70
,并且基于最高限制速度规则,速度限制被确定为80
。
我决定将其实现为每日批处理,并使用pandas dataframe实现了它,如下所示。
with open("/path/file.pickle", "rb") as f:
matsers:list = pickle.load(f)
def func_max_spd_iterrow(lon, lat, master):
limit_spd = -1
if ((lat >= 33.0) & (lat <= 39.0)):
locs = master.loc[(master['MINY']<=lat)&(master['MAXY']>lat)&(master['MINX']<=lon)&(master['MAXX']>lon)]
if(locs.size != 0):
spd = locs['LIMIT_SPD'].max()
return spd
如上图所示,网格信息是使用pickle加载的,数据长度约为1000万。所以,仅仅分析一个司机2,000秒的驾驶记录就需要大约12秒
因此,我有一个问题,分析3,000个行程信息,因为它是极其耗时的。
是否有合适的算法来解决这个问题或pandas dataframe方法可以加速索引?
1条答案
按热度按时间bgtovc5b1#
然后,
然后,
用法示例: