From a115eadbec629b82b8197e2969ab313e3669f9d4 Mon Sep 17 00:00:00 2001 From: wangxu <1318272526@qq.com> Date: Tue, 4 Nov 2025 14:39:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98=E8=AF=8A?= =?UTF-8?q?=E6=96=AD=E6=8E=A5=E5=8F=A3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/eva_common.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/app/eva_common.py b/app/eva_common.py index f854a1a..3d9a158 100644 --- a/app/eva_common.py +++ b/app/eva_common.py @@ -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,