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_section('executive'):
|
||||||
if config.has_option('executive', 'userid'):
|
if config.has_option('executive', 'userid'):
|
||||||
g_config['executives'] = config.get('executive', 'userid').split(',')
|
g_config['executives'] = config.get('executive', 'userid').split(',')
|
||||||
|
load_road_mapping("../common_roadnet/xl_tmnet_mapping_20250831.txt")
|
||||||
# 20250514 探索分词索引查询路口名称
|
# 20250514 探索分词索引查询路口名称
|
||||||
# full_crossname_inverted_index()
|
# full_crossname_inverted_index()
|
||||||
# gen_cross_info_index(cityinfo_dict)
|
# gen_cross_info_index(cityinfo_dict)
|
||||||
|
|
@ -532,4 +533,26 @@ def has_duplicate_dates(range1_start, range1_end, range2_start, range2_end):
|
||||||
|
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
print(f"日期格式错误: {e}")
|
print(f"日期格式错误: {e}")
|
||||||
return False
|
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
|
continue
|
||||||
item_csr_data = survey_pb.xl_cross_survey_result_t()
|
item_csr_data = survey_pb.xl_cross_survey_result_t()
|
||||||
item_csr_data.ParseFromString(item_data[0]['data'])
|
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:
|
if inroadid not in road_src_dict:
|
||||||
logging.error('路口id: %s, 源方向: %s, 数据不存在' % (crossid, inroadid))
|
logging.error('路口id: %s, 源方向: %s, 数据不存在' % (crossid, inroadid))
|
||||||
continue
|
continue
|
||||||
|
|
@ -566,7 +568,9 @@ def query_cross_survey_pngs(params):
|
||||||
continue
|
continue
|
||||||
item_csr_data = survey_pb.xl_cross_survey_result_t()
|
item_csr_data = survey_pb.xl_cross_survey_result_t()
|
||||||
item_csr_data.ParseFromString(item_data[0]['data'])
|
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:
|
if inroadid not in road_src_dict:
|
||||||
logging.error('路口id: %s, 源方向: %s, 数据不存在' % (crossid, inroadid))
|
logging.error('路口id: %s, 源方向: %s, 数据不存在' % (crossid, inroadid))
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,19 @@ def gen_avg_cross_delay_pb(cross_delay_data_list, weekdays):
|
||||||
continue
|
continue
|
||||||
item_delay_pb = pb.xl_cross_delayinfo_t()
|
item_delay_pb = pb.xl_cross_delayinfo_t()
|
||||||
item_delay_pb.ParseFromString(item['data'])
|
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)
|
cross_delay_pb_list.append(item_delay_pb)
|
||||||
avg_cross_delay = None
|
avg_cross_delay = None
|
||||||
if len(cross_delay_pb_list) == 0:
|
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_am_cross_delay_info = pb.xl_cross_delayinfo_t()
|
||||||
item_pm_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])
|
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])
|
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:
|
if not item_am_cross_delay_info or not item_pm_cross_delay_info:
|
||||||
tide_index_list.append(tide_index)
|
tide_index_list.append(tide_index)
|
||||||
continue
|
continue
|
||||||
|
|
@ -1219,6 +1258,19 @@ def parse_data2pb(data_list, weekdays):
|
||||||
tp_end = row['tp_end']
|
tp_end = row['tp_end']
|
||||||
item_cross_delay_info = pb.xl_cross_delayinfo_t()
|
item_cross_delay_info = pb.xl_cross_delayinfo_t()
|
||||||
item_cross_delay_info.ParseFromString(row['data'])
|
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:
|
if str(datetime.strptime(str(day), '%Y%m%d').weekday() + 1) not in weekdays:
|
||||||
item_cross_delay_info = None
|
item_cross_delay_info = None
|
||||||
res_list.append({
|
res_list.append({
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ g_citycode_set = set()
|
||||||
g_config = {}
|
g_config = {}
|
||||||
g_info_dict = {}
|
g_info_dict = {}
|
||||||
g_gw_info_dict = {}
|
g_gw_info_dict = {}
|
||||||
|
g_road_mapping = {}
|
||||||
|
|
||||||
#
|
#
|
||||||
g_roadnet = RoadNet('China')
|
g_roadnet = RoadNet('China')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue