修复问题诊断接口bug

This commit is contained in:
wangxu 2025-11-04 14:39:42 +08:00
parent 756e55bf0d
commit a115eadbec
1 changed files with 15 additions and 7 deletions

View File

@ -404,7 +404,7 @@ def gen_cross_static_info(crossid, nodeid, area_id, cross_ledger_info_dict):
'slc_company': slc_company_name,
'internet': internet_str,
'cross_model': cross_model,
'lane_nums_list': list(sort_lane_num_info.values()),
'lane_nums_list': [item[0] for item in list(sort_lane_num_info.values())],
'road_special_info': sorted_road_special_info,
'length_info': sorted_length_info,
'avg_length': avg_length
@ -445,6 +445,8 @@ def gen_dir_light_info_dict(light_infos):
def check_outside_left(lane_turn_info):
seen_s = False # 是否已出现直行车道
for func in lane_turn_info:
if func == '-':
continue
turn_type_str = g_turn2str[str(func)]
if 's' in turn_type_str: # 当前是直行车道
seen_s = True
@ -548,7 +550,10 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict):
inroad_info = g_roadnet.query_road(roadid)
split_turns_set = set()
for outroadid in outroadid_list:
angle = g_roadnet.calc_road_turn_angle_without_abs(inroad_info, g_roadnet.query_road(outroadid))
outroad = g_roadnet.query_road(outroadid)
if not outroad:
continue
angle = g_roadnet.calc_road_turn_angle_without_abs(inroad_info, outroad)
if abs(angle) <= 30:
split_turns_set.add(0)
elif abs(angle) >= 150:
@ -558,7 +563,7 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict):
else:
split_turns_set.add(1)
car_num = road_delay_dict[roadid].delay_info.car_num
in_flow_rate = round(car_num / cross_sum_car_num, 2) if cross_out_sum_car_num != 0 else 0
in_flow_rate = round(car_num / cross_sum_car_num, 2) * 100 if cross_out_sum_car_num != 0 else 0
l_rate = round(road_delay_dict[roadid].delay_info.turn_ratio_1 / car_num, 2) * 100 if car_num != 0 else 0
s_rate = round(road_delay_dict[roadid].delay_info.turn_ratio_0 / car_num, 2) * 100 if car_num != 0 else 0
r_rate = round(road_delay_dict[roadid].delay_info.turn_ratio_2 / car_num, 2) * 100 if car_num != 0 else 0
@ -572,13 +577,16 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict):
s_num = road_delay_dict[roadid].delay_info.turn_ratio_0
r_num = road_delay_dict[roadid].delay_info.turn_ratio_2
rate_list = fix_to_100(l_rate, s_rate, r_rate)
l_rate, s_rate, r_rate = rate_list[0], rate_list[1], rate_list[2]
l_rate, s_rate, r_rate = rate_list[0] if rate_list[0] == '-' else round(rate_list[0], 2), rate_list[1] if rate_list[1] == '-' else round(rate_list[1], 2), rate_list[2] if rate_list[2] == '-' else round(rate_list[2], 2)
out_road_id = roads_dir_dict[dir]['out']
if out_road_id != '-' and out_road_id in outroad_info_dict.keys():
out_road_info = g_roadnet.query_road(out_road_id)
merge_turns_set = set()
for inroadid in inroadid_list:
angle = g_roadnet.calc_road_turn_angle_without_abs(out_road_info, g_roadnet.query_road(inroadid))
inroad = g_roadnet.query_road(inroadid)
if not inroad:
continue
angle = g_roadnet.calc_road_turn_angle_without_abs(out_road_info, inroad)
if abs(angle) <= 30:
merge_turns_set.add(0)
elif abs(angle) >= 150:
@ -588,7 +596,7 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict):
else:
merge_turns_set.add(1)
out_car_num = outroad_info_dict[out_road_id].turn_info.car_num
out_flow_rate = round(out_car_num / cross_out_sum_car_num, 2) if cross_out_sum_car_num != 0 else 0
out_flow_rate = round(out_car_num / cross_out_sum_car_num, 2) * 100 if cross_out_sum_car_num != 0 else 0
out_l_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_1 / out_car_num, 2) * 100 if out_car_num != 0 else 0
out_s_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_0 / out_car_num, 2) * 100 if out_car_num != 0 else 0
out_r_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_2 / out_car_num, 2) * 100 if out_car_num != 0 else 0
@ -600,7 +608,7 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict):
out_r_rate = '-'
out_l_num, out_s_num, out_r_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_1, outroad_info_dict[out_road_id].turn_info.turn_ratio_0, outroad_info_dict[out_road_id].turn_info.turn_ratio_2
rate_list = fix_to_100(out_l_rate, out_s_rate, out_r_rate)
out_l_rate, out_s_rate, out_r_rate = rate_list[0], rate_list[1], rate_list[2]
out_l_rate, out_s_rate, out_r_rate = rate_list[0] if rate_list[0] == '-' else round(rate_list[0], 2), rate_list[1] if rate_list[1] == '-' else round(rate_list[1], 2), rate_list[2] if rate_list[2] == '-' else round(rate_list[2], 2)
road_flow_turn_rate[roadid] = {
'src_dir': dir,
'in_flow_rate': in_flow_rate,