修复路口运行评测页面分流转向比在丁字路口或缺少某个进口道分支时的计算逻辑异常以及流向对比中变化值计算异常问题
This commit is contained in:
parent
1622eb5928
commit
2d9dccad50
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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] = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue