修复路口运行评测页面分流转向比在丁字路口或缺少某个进口道分支时的计算逻辑异常
This commit is contained in:
parent
2d9dccad50
commit
8a326e7a58
|
|
@ -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()]
|
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()]
|
outroadid_list = [roads_dir_dict[k]['out'] for k in roads_dir_dict.keys()]
|
||||||
for dir in roads_dir_dict.keys():
|
for dir in roads_dir_dict.keys():
|
||||||
out_road_id = roads_dir_dict[dir]['out']
|
roadid = roads_dir_dict[dir]['in']
|
||||||
if 'udr_' in out_road_id:
|
if 'udr_' in roadid:
|
||||||
continue
|
continue
|
||||||
l_rate, s_rate, r_rate = 0, 0, 0
|
l_rate, s_rate, r_rate = 0, 0, 0
|
||||||
out_l_rate, out_s_rate, out_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
|
in_flow_rate, out_flow_rate = 0, 0
|
||||||
l_num, s_num, r_num = 0, 0, 0
|
l_num, s_num, r_num = 0, 0, 0
|
||||||
out_l_num, out_s_num, out_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():
|
if roadid != '-' and roadid in road_delay_dict.keys():
|
||||||
out_road_info = g_roadnet.query_road(out_road_id)
|
inroad_info = g_roadnet.query_road(roadid)
|
||||||
split_turns_set = set()
|
split_turns_set = set()
|
||||||
for inroadid in inroadid_list:
|
for outroadid in outroadid_list:
|
||||||
inroad = g_roadnet.query_road(inroadid)
|
outroad = g_roadnet.query_road(outroadid)
|
||||||
if not inroad:
|
if not outroad:
|
||||||
continue
|
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:
|
if abs(angle) <= 30:
|
||||||
split_turns_set.add(0)
|
split_turns_set.add(0)
|
||||||
elif abs(angle) >= 150:
|
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)
|
split_turns_set.add(2)
|
||||||
else:
|
else:
|
||||||
split_turns_set.add(1)
|
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
|
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
|
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(outroad_info_dict[out_road_id].turn_info.turn_ratio_0 / 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(outroad_info_dict[out_road_id].turn_info.turn_ratio_2 / 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:
|
if 0 not in split_turns_set:
|
||||||
s_rate = '-'
|
s_rate = '-'
|
||||||
if 1 not in split_turns_set:
|
if 1 not in split_turns_set:
|
||||||
l_rate = '-'
|
l_rate = '-'
|
||||||
if 2 not in split_turns_set:
|
if 2 not in split_turns_set:
|
||||||
r_rate = '-'
|
r_rate = '-'
|
||||||
l_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_1
|
l_num = road_delay_dict[roadid].delay_info.turn_ratio_1
|
||||||
s_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_0
|
s_num = road_delay_dict[roadid].delay_info.turn_ratio_0
|
||||||
r_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_2
|
r_num = road_delay_dict[roadid].delay_info.turn_ratio_2
|
||||||
rate_list = fix_to_100(l_rate, s_rate, r_rate)
|
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])
|
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']
|
out_road_id = roads_dir_dict[dir]['out']
|
||||||
if roadid != '-' and roadid in road_delay_dict.keys():
|
if out_road_id != '-' and out_road_id in outroad_info_dict.keys():
|
||||||
inroad_info = g_roadnet.query_road(roadid)
|
out_road_info = g_roadnet.query_road(out_road_id)
|
||||||
merge_turns_set = set()
|
merge_turns_set = set()
|
||||||
for outroadid in outroadid_list:
|
for inroadid in inroadid_list:
|
||||||
outroad = g_roadnet.query_road(outroadid)
|
inroad = g_roadnet.query_road(inroadid)
|
||||||
if not outroad:
|
if not inroad:
|
||||||
continue
|
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:
|
if abs(angle) <= 30:
|
||||||
merge_turns_set.add(0)
|
merge_turns_set.add(0)
|
||||||
elif abs(angle) >= 150:
|
elif abs(angle) >= 150:
|
||||||
merge_turns_set.add(3)
|
merge_turns_set.add(3)
|
||||||
elif angle > 0:
|
elif angle > 0:
|
||||||
merge_turns_set.add(2)
|
|
||||||
else:
|
|
||||||
merge_turns_set.add(1)
|
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_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_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(road_delay_dict[roadid].delay_info.turn_ratio_0 / 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(road_delay_dict[roadid].delay_info.turn_ratio_2 / 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:
|
if 0 not in merge_turns_set:
|
||||||
out_s_rate = '-'
|
out_s_rate = '-'
|
||||||
if 1 not in merge_turns_set:
|
if 1 not in merge_turns_set:
|
||||||
out_l_rate = '-'
|
out_l_rate = '-'
|
||||||
if 2 not in merge_turns_set:
|
if 2 not in merge_turns_set:
|
||||||
out_r_rate = '-'
|
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)
|
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])
|
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] = {
|
road_flow_turn_rate[roadid] = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue