diff --git a/app/cross_compare_common.py b/app/cross_compare_common.py index 9a0face..3199e70 100644 --- a/app/cross_compare_common.py +++ b/app/cross_compare_common.py @@ -139,18 +139,18 @@ def parse_comp_inroad_delay_infos(inroad_delay_infos, comp_inroad_delay_infos): flow_diff_data = { 'item': '变化量', 'service_level': '-' if flow_comp_data['service_level'] == '-' or flow_item_data['service_level'] == '-' else compare_level(flow_comp_data['service_level'], flow_item_data['service_level']), - 'stop_times': '-' if flow_comp_data['stop_times'] == '-' or flow_item_data['stop_times'] == '-' else round(flow_comp_data['stop_times'] - flow_item_data['stop_times'], 2), - 'high_park_percent': '-' if '-' in flow_comp_data['high_park_percent'] or '-' in flow_item_data['high_park_percent'] else str(int(float(flow_comp_data['high_park_percent'].replace('%', '')) - float(flow_item_data['high_park_percent'].replace('%', '')))) + '%', - 'park_time': '-' if flow_comp_data['park_time'] == '-' or flow_item_data['park_time'] == '-' else round(flow_comp_data['park_time'] - flow_item_data['park_time'], 2), - 'delay_time': '-' if flow_comp_data['delay_time'] == '-' or flow_item_data['delay_time'] == '-' else round(flow_comp_data['delay_time'] - flow_item_data['delay_time'], 2), - 'speed': '-' if flow_comp_data['speed'] == '-' or flow_item_data['speed'] == '-' else round(flow_comp_data['speed'] - flow_item_data['speed'], 2), - 'move_speed': '-' if flow_comp_data['move_speed'] == '-' or flow_item_data['move_speed'] == '-' else round(flow_comp_data['move_speed'] - flow_item_data['move_speed'], 2), - 'stop_times_color': '-' if flow_item_data['stop_times'] == '-' or flow_comp_data['stop_times'] == '-' else calc_index_color(flow_item_data['stop_times'], flow_comp_data['stop_times'], 'stop_times'), - 'high_park_percent_color': '-' if '-' in flow_item_data['high_park_percent'] or '-' in flow_comp_data['high_park_percent'] else calc_index_color(float(flow_item_data['high_park_percent'].replace('%', '')), float(flow_comp_data['high_park_percent'].replace('%', '')), 'high_park_percent'), - 'park_time_color': '-' if flow_item_data['park_time'] == '-' or flow_comp_data['park_time'] == '-' else calc_index_color(flow_item_data['park_time'], flow_comp_data['park_time'], 'park_time'), - 'delay_time_color': '-' if flow_item_data['delay_time'] == '-' or flow_comp_data['delay_time'] == '-' else calc_index_color(flow_item_data['delay_time'], flow_comp_data['delay_time'], 'delay_time'), - 'speed_color': '-' if flow_item_data['speed'] == '-' or flow_comp_data['speed'] == '-' else calc_index_color(flow_item_data['speed'], flow_comp_data['speed'], 'speed'), - 'move_speed_color': '-' if flow_item_data['move_speed'] == '-' or flow_comp_data['move_speed'] == '-' else calc_index_color(flow_item_data['move_speed'], flow_comp_data['move_speed'], 'move_speed') + 'stop_times': '-' if flow_item_data['stop_times'] == '-' or flow_comp_data['stop_times'] == '-' else round(flow_item_data['stop_times'] - flow_comp_data['stop_times'], 2), + 'high_park_percent': '-' if '-' in flow_item_data['high_park_percent'] or '-' in flow_comp_data['high_park_percent'] else str(int(float(flow_item_data['high_park_percent'].replace('%', '')) - float(flow_comp_data['high_park_percent'].replace('%', '')))) + '%', + 'park_time': '-' if flow_item_data['park_time'] == '-' or flow_comp_data['park_time'] == '-' else round(flow_item_data['park_time'] - flow_comp_data['park_time'], 2), + 'delay_time': '-' if flow_item_data['delay_time'] == '-' or flow_comp_data['delay_time'] == '-' else round(flow_item_data['delay_time'] - flow_comp_data['delay_time'], 2), + 'speed': '-' if flow_item_data['speed'] == '-' or flow_comp_data['speed'] == '-' else round(flow_item_data['speed'] - flow_comp_data['speed'], 2), + 'move_speed': '-' if flow_item_data['move_speed'] == '-' or flow_comp_data['move_speed'] == '-' else round(flow_item_data['move_speed'] - flow_comp_data['move_speed'], 2), + 'stop_times_color': '-' if flow_comp_data['stop_times'] == '-' or flow_item_data['stop_times'] == '-' else calc_index_color(flow_item_data['stop_times'], flow_comp_data['stop_times'], 'stop_times'), + 'high_park_percent_color': '-' if '-' in flow_comp_data['high_park_percent'] or '-' in flow_item_data['high_park_percent'] else calc_index_color(float(flow_item_data['high_park_percent'].replace('%', '')), float(flow_comp_data['high_park_percent'].replace('%', '')), 'high_park_percent'), + 'park_time_color': '-' if flow_comp_data['park_time'] == '-' or flow_item_data['park_time'] == '-' else calc_index_color(flow_item_data['park_time'], flow_comp_data['park_time'], 'park_time'), + 'delay_time_color': '-' if flow_comp_data['delay_time'] == '-' or flow_item_data['delay_time'] == '-' else calc_index_color(flow_item_data['delay_time'], flow_comp_data['delay_time'], 'delay_time'), + 'speed_color': '-' if flow_comp_data['speed'] == '-' or flow_item_data['speed'] == '-' else calc_index_color(flow_item_data['speed'], flow_comp_data['speed'], 'speed'), + 'move_speed_color': '-' if flow_comp_data['move_speed'] == '-' or flow_item_data['move_speed'] == '-' else calc_index_color(flow_item_data['move_speed'], flow_comp_data['move_speed'], 'move_speed') } flow_delay_datas[item_turn] = { 'item_data': flow_item_data, diff --git a/app/eva_common.py b/app/eva_common.py index 8af2c83..7134783 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(): - roadid = roads_dir_dict[dir]['in'] - if 'udr_' in roadid: + out_road_id = roads_dir_dict[dir]['out'] + if 'udr_' in out_road_id: 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 roadid != '-' and roadid in road_delay_dict.keys(): - inroad_info = g_roadnet.query_road(roadid) + if out_road_id != '-' and out_road_id in outroad_info_dict.keys(): + out_road_info = g_roadnet.query_road(out_road_id) split_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: split_turns_set.add(0) elif abs(angle) >= 150: @@ -772,31 +772,31 @@ 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 = 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 + 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 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(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 + 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 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 = 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 + 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 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]) - 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) + roadid = roads_dir_dict[dir]['in'] + if roadid != '-' and roadid in road_delay_dict.keys(): + inroad_info = g_roadnet.query_road(roadid) merge_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: merge_turns_set.add(0) elif abs(angle) >= 150: @@ -805,18 +805,18 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict): merge_turns_set.add(2) else: merge_turns_set.add(1) - out_car_num = outroad_info_dict[out_road_id].turn_info.car_num + out_car_num = road_delay_dict[roadid].delay_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(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 + 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 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 = 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 + 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 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] = {