20251230 解决更新路网文件导致出现新旧延误数据中存在路段id不一致返回结果异常的补丁
This commit is contained in:
parent
7362b32e68
commit
a45262eeb0
|
|
@ -327,6 +327,7 @@ def init_with_config():
|
|||
if config.has_section('executive'):
|
||||
if config.has_option('executive', 'userid'):
|
||||
g_config['executives'] = config.get('executive', 'userid').split(',')
|
||||
load_road_mapping("../common_roadnet/xl_tmnet_mapping_20250831.txt")
|
||||
# 20250514 探索分词索引查询路口名称
|
||||
# full_crossname_inverted_index()
|
||||
# gen_cross_info_index(cityinfo_dict)
|
||||
|
|
@ -533,3 +534,25 @@ def has_duplicate_dates(range1_start, range1_end, range2_start, range2_end):
|
|||
except ValueError as e:
|
||||
print(f"日期格式错误: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def load_road_mapping(mapping_file: str):
|
||||
with open(mapping_file, 'r', encoding='utf-8') as f:
|
||||
while True:
|
||||
line = f.readline()
|
||||
if not line:
|
||||
break
|
||||
fields = line.rstrip('\n').split(' ')
|
||||
if len(fields) == 3:
|
||||
tag = fields[0]
|
||||
if tag == 'in' or tag == 'out':
|
||||
roadid_old = fields[1]
|
||||
roadid_new = fields[2]
|
||||
g_road_mapping[roadid_old] = roadid_new
|
||||
else:
|
||||
print(f"Unknown line: {line}")
|
||||
else:
|
||||
# 忽略crossid映射
|
||||
continue
|
||||
# 输出道路个数
|
||||
print(f"road_mapping_count: {len(g_road_mapping)}")
|
||||
|
|
@ -415,7 +415,9 @@ def query_cross_survey_result(params):
|
|||
continue
|
||||
item_csr_data = survey_pb.xl_cross_survey_result_t()
|
||||
item_csr_data.ParseFromString(item_data[0]['data'])
|
||||
inroadid = item_csr_data.inroadid
|
||||
# 20251230 解决更新路网文件导致出现新旧延误数据中存在路段id不一致返回结果异常的补丁
|
||||
inroadid = item_csr_data.inroadid if item_csr_data.inroadid not in g_road_mapping.keys() else g_road_mapping[item_csr_data.inroadid]
|
||||
item_csr_data.inroadid = inroadid
|
||||
if inroadid not in road_src_dict:
|
||||
logging.error('路口id: %s, 源方向: %s, 数据不存在' % (crossid, inroadid))
|
||||
continue
|
||||
|
|
@ -566,7 +568,9 @@ def query_cross_survey_pngs(params):
|
|||
continue
|
||||
item_csr_data = survey_pb.xl_cross_survey_result_t()
|
||||
item_csr_data.ParseFromString(item_data[0]['data'])
|
||||
inroadid = item_csr_data.inroadid
|
||||
# 20251230 解决更新路网文件导致出现新旧延误数据中存在路段id不一致返回结果异常的补丁
|
||||
inroadid = item_csr_data.inroadid if item_csr_data.inroadid not in g_road_mapping.keys() else g_road_mapping[item_csr_data.inroadid]
|
||||
item_csr_data.inroadid = inroadid
|
||||
if inroadid not in road_src_dict:
|
||||
logging.error('路口id: %s, 源方向: %s, 数据不存在' % (crossid, inroadid))
|
||||
continue
|
||||
|
|
|
|||
|
|
@ -60,6 +60,19 @@ def gen_avg_cross_delay_pb(cross_delay_data_list, weekdays):
|
|||
continue
|
||||
item_delay_pb = pb.xl_cross_delayinfo_t()
|
||||
item_delay_pb.ParseFromString(item['data'])
|
||||
# 20251230 解决更新路网文件导致出现新旧延误数据中存在路段id不一致返回结果异常的补丁
|
||||
road_delay_infos = item_delay_pb.inroad_delay_infos
|
||||
for road_delay_info in road_delay_infos:
|
||||
new_roadid = road_delay_info.inroadid if road_delay_info.inroadid not in g_road_mapping.keys() else g_road_mapping[road_delay_info.inroadid]
|
||||
road_delay_info.inroadid = new_roadid
|
||||
flow_delay_infos = road_delay_info.flow_delay_infos
|
||||
for flow_delay_info in flow_delay_infos:
|
||||
new_roadid = flow_delay_info.inroadid if flow_delay_info.inroadid not in g_road_mapping.keys() else g_road_mapping[flow_delay_info.inroadid]
|
||||
flow_delay_info.inroadid = new_roadid
|
||||
outroadid_infos = item_delay_pb.outroad_infos
|
||||
for outroadid_info in outroadid_infos:
|
||||
new_roadid = outroadid_info.outroadid if outroadid_info.outroadid not in g_road_mapping.keys() else g_road_mapping[outroadid_info.outroadid]
|
||||
outroadid_info.outroadid = new_roadid
|
||||
cross_delay_pb_list.append(item_delay_pb)
|
||||
avg_cross_delay = None
|
||||
if len(cross_delay_pb_list) == 0:
|
||||
|
|
@ -882,7 +895,33 @@ def calc_tide_index(crossid, nodeid, date_list, roads_dir_dict, date_type=None):
|
|||
item_am_cross_delay_info = pb.xl_cross_delayinfo_t()
|
||||
item_pm_cross_delay_info = pb.xl_cross_delayinfo_t()
|
||||
item_am_cross_delay_info.ParseFromString(date_am_delay_info_dict[date])
|
||||
# 20251230 解决更新路网文件导致出现新旧延误数据中存在路段id不一致返回结果异常的补丁
|
||||
road_delay_infos = item_am_cross_delay_info.inroad_delay_infos
|
||||
for road_delay_info in road_delay_infos:
|
||||
new_roadid = road_delay_info.inroadid if road_delay_info.inroadid not in g_road_mapping.keys() else g_road_mapping[road_delay_info.inroadid]
|
||||
road_delay_info.inroadid = new_roadid
|
||||
flow_delay_infos = road_delay_info.flow_delay_infos
|
||||
for flow_delay_info in flow_delay_infos:
|
||||
new_roadid = flow_delay_info.inroadid if flow_delay_info.inroadid not in g_road_mapping.keys() else g_road_mapping[flow_delay_info.inroadid]
|
||||
flow_delay_info.inroadid = new_roadid
|
||||
outroadid_infos = item_am_cross_delay_info.outroad_infos
|
||||
for outroadid_info in outroadid_infos:
|
||||
new_roadid = outroadid_info.outroadid if outroadid_info.outroadid not in g_road_mapping.keys() else g_road_mapping[outroadid_info.outroadid]
|
||||
outroadid_info.outroadid = new_roadid
|
||||
item_pm_cross_delay_info.ParseFromString(date_pm_delay_info_dict[date])
|
||||
# 20251230 解决更新路网文件导致出现新旧延误数据中存在路段id不一致返回结果异常的补丁
|
||||
road_delay_infos = item_pm_cross_delay_info.inroad_delay_infos
|
||||
for road_delay_info in road_delay_infos:
|
||||
new_roadid = road_delay_info.inroadid if road_delay_info.inroadid not in g_road_mapping.keys() else g_road_mapping[road_delay_info.inroadid]
|
||||
road_delay_info.inroadid = new_roadid
|
||||
flow_delay_infos = road_delay_info.flow_delay_infos
|
||||
for flow_delay_info in flow_delay_infos:
|
||||
new_roadid = flow_delay_info.inroadid if flow_delay_info.inroadid not in g_road_mapping.keys() else g_road_mapping[flow_delay_info.inroadid]
|
||||
flow_delay_info.inroadid = new_roadid
|
||||
outroadid_infos = item_pm_cross_delay_info.outroad_infos
|
||||
for outroadid_info in outroadid_infos:
|
||||
new_roadid = outroadid_info.outroadid if outroadid_info.outroadid not in g_road_mapping.keys() else g_road_mapping[outroadid_info.outroadid]
|
||||
outroadid_info.outroadid = new_roadid
|
||||
if not item_am_cross_delay_info or not item_pm_cross_delay_info:
|
||||
tide_index_list.append(tide_index)
|
||||
continue
|
||||
|
|
@ -1219,6 +1258,19 @@ def parse_data2pb(data_list, weekdays):
|
|||
tp_end = row['tp_end']
|
||||
item_cross_delay_info = pb.xl_cross_delayinfo_t()
|
||||
item_cross_delay_info.ParseFromString(row['data'])
|
||||
# 20251230 解决更新路网文件导致出现新旧延误数据中存在路段id不一致返回结果异常的补丁
|
||||
road_delay_infos = item_cross_delay_info.inroad_delay_infos
|
||||
for road_delay_info in road_delay_infos:
|
||||
new_roadid = road_delay_info.inroadid if road_delay_info.inroadid not in g_road_mapping.keys() else g_road_mapping[road_delay_info.inroadid]
|
||||
road_delay_info.inroadid = new_roadid
|
||||
flow_delay_infos = road_delay_info.flow_delay_infos
|
||||
for flow_delay_info in flow_delay_infos:
|
||||
new_roadid = flow_delay_info.inroadid if flow_delay_info.inroadid not in g_road_mapping.keys() else g_road_mapping[flow_delay_info.inroadid]
|
||||
flow_delay_info.inroadid = new_roadid
|
||||
outroadid_infos = item_cross_delay_info.outroad_infos
|
||||
for outroadid_info in outroadid_infos:
|
||||
new_roadid = outroadid_info.outroadid if outroadid_info.outroadid not in g_road_mapping.keys() else g_road_mapping[outroadid_info.outroadid]
|
||||
outroadid_info.outroadid = new_roadid
|
||||
if str(datetime.strptime(str(day), '%Y%m%d').weekday() + 1) not in weekdays:
|
||||
item_cross_delay_info = None
|
||||
res_list.append({
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ g_citycode_set = set()
|
|||
g_config = {}
|
||||
g_info_dict = {}
|
||||
g_gw_info_dict = {}
|
||||
g_road_mapping = {}
|
||||
|
||||
#
|
||||
g_roadnet = RoadNet('China')
|
||||
|
|
|
|||
Loading…
Reference in New Issue