From 8a326e7a5856804094d492e38a72583d2c456c4c Mon Sep 17 00:00:00 2001 From: wangxu <1318272526@qq.com> Date: Wed, 25 Mar 2026 16:27:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=AF=E5=8F=A3=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E8=AF=84=E6=B5=8B=E9=A1=B5=E9=9D=A2=E5=88=86=E6=B5=81?= =?UTF-8?q?=E8=BD=AC=E5=90=91=E6=AF=94=E5=9C=A8=E4=B8=81=E5=AD=97=E8=B7=AF?= =?UTF-8?q?=E5=8F=A3=E6=88=96=E7=BC=BA=E5=B0=91=E6=9F=90=E4=B8=AA=E8=BF=9B?= =?UTF-8?q?=E5=8F=A3=E9=81=93=E5=88=86=E6=94=AF=E6=97=B6=E7=9A=84=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=80=BB=E8=BE=91=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/eva_common.py | 58 +++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/app/eva_common.py b/app/eva_common.py index 7134783..4247f4e 100644 --- a/app/eva_common.py +++ b/app/eva_common.py @@ -748,22 +748,22 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict): inroadid_list = [roads_dir_dict[k]['in'] for k in roads_dir_dict.keys()] outroadid_list = [roads_dir_dict[k]['out'] for k in roads_dir_dict.keys()] for dir in roads_dir_dict.keys(): - out_road_id = roads_dir_dict[dir]['out'] - if 'udr_' in out_road_id: + roadid = roads_dir_dict[dir]['in'] + if 'udr_' in roadid: continue l_rate, s_rate, r_rate = 0, 0, 0 out_l_rate, out_s_rate, out_r_rate = 0, 0, 0 in_flow_rate, out_flow_rate = 0, 0 l_num, s_num, r_num = 0, 0, 0 out_l_num, out_s_num, out_r_num = 0, 0, 0 - if out_road_id != '-' and out_road_id in outroad_info_dict.keys(): - out_road_info = g_roadnet.query_road(out_road_id) + if roadid != '-' and roadid in road_delay_dict.keys(): + inroad_info = g_roadnet.query_road(roadid) split_turns_set = set() - for inroadid in inroadid_list: - inroad = g_roadnet.query_road(inroadid) - if not inroad: + for outroadid in outroadid_list: + outroad = g_roadnet.query_road(outroadid) + if not outroad: continue - angle = g_roadnet.calc_road_turn_angle_without_abs(out_road_info, inroad) + 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: @@ -772,51 +772,51 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict): split_turns_set.add(2) else: split_turns_set.add(1) - car_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 + car_num = road_delay_dict[roadid].delay_info.turn_ratio_1 + road_delay_dict[roadid].delay_info.turn_ratio_0 + road_delay_dict[roadid].delay_info.turn_ratio_2 in_flow_rate = int(car_num / cross_sum_car_num * 100) if cross_out_sum_car_num != 0 else 0 - l_rate = max(1, round(outroad_info_dict[out_road_id].turn_info.turn_ratio_1 / car_num * 100)) if car_num != 0 else 0 - s_rate = max(1, round(outroad_info_dict[out_road_id].turn_info.turn_ratio_0 / car_num * 100)) if car_num != 0 else 0 - r_rate = max(1, round(outroad_info_dict[out_road_id].turn_info.turn_ratio_2 / car_num * 100)) if car_num != 0 else 0 + l_rate = max(1, round(road_delay_dict[roadid].delay_info.turn_ratio_1 / car_num * 100)) if car_num != 0 else 0 + s_rate = max(1, round(road_delay_dict[roadid].delay_info.turn_ratio_0 / car_num * 100)) if car_num != 0 else 0 + r_rate = max(1, round(road_delay_dict[roadid].delay_info.turn_ratio_2 / car_num * 100)) if car_num != 0 else 0 if 0 not in split_turns_set: s_rate = '-' if 1 not in split_turns_set: l_rate = '-' if 2 not in split_turns_set: r_rate = '-' - l_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_1 - s_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_0 - r_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_2 + l_num = road_delay_dict[roadid].delay_info.turn_ratio_1 + 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] if rate_list[0] == '-' else int(rate_list[0]), rate_list[1] if rate_list[1] == '-' else int(rate_list[1]), rate_list[2] if rate_list[2] == '-' else int(rate_list[2]) - roadid = roads_dir_dict[dir]['in'] - if roadid != '-' and roadid in road_delay_dict.keys(): - inroad_info = g_roadnet.query_road(roadid) + 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 outroadid in outroadid_list: - outroad = g_roadnet.query_road(outroadid) - if not outroad: + for inroadid in inroadid_list: + inroad = g_roadnet.query_road(inroadid) + if not inroad: continue - angle = g_roadnet.calc_road_turn_angle_without_abs(inroad_info, outroad) + 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: merge_turns_set.add(3) elif angle > 0: - merge_turns_set.add(2) - else: merge_turns_set.add(1) - out_car_num = road_delay_dict[roadid].delay_info.car_num + else: + merge_turns_set.add(2) + out_car_num = outroad_info_dict[out_road_id].turn_info.car_num out_flow_rate = int(out_car_num / cross_out_sum_car_num * 100) if cross_out_sum_car_num != 0 else 0 - out_l_rate = max(1, round(road_delay_dict[roadid].delay_info.turn_ratio_1 / out_car_num * 100)) if out_car_num != 0 else 0 - out_s_rate = max(1, round(road_delay_dict[roadid].delay_info.turn_ratio_0 / out_car_num * 100)) if out_car_num != 0 else 0 - out_r_rate = max(1, round(road_delay_dict[roadid].delay_info.turn_ratio_2 / out_car_num * 100)) if out_car_num != 0 else 0 + out_l_rate = max(1, round(outroad_info_dict[out_road_id].turn_info.turn_ratio_1 / out_car_num * 100)) if out_car_num != 0 else 0 + out_s_rate = max(1, round(outroad_info_dict[out_road_id].turn_info.turn_ratio_0 / out_car_num * 100)) if out_car_num != 0 else 0 + out_r_rate = max(1, round(outroad_info_dict[out_road_id].turn_info.turn_ratio_2 / out_car_num * 100)) if out_car_num != 0 else 0 if 0 not in merge_turns_set: out_s_rate = '-' if 1 not in merge_turns_set: out_l_rate = '-' if 2 not in merge_turns_set: out_r_rate = '-' - out_l_num, out_s_num, out_r_num = road_delay_dict[roadid].delay_info.turn_ratio_1, road_delay_dict[roadid].delay_info.turn_ratio_0, road_delay_dict[roadid].delay_info.turn_ratio_2 + 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] if rate_list[0] == '-' else int(rate_list[0]), rate_list[1] if rate_list[1] == '-' else int(rate_list[1]), rate_list[2] if rate_list[2] == '-' else int(rate_list[2]) road_flow_turn_rate[roadid] = {