修复潮汐指数计算bug

This commit is contained in:
wangxu 2025-11-11 18:49:16 +08:00
parent 07d3882100
commit 3888612e26
2 changed files with 10 additions and 12 deletions

View File

@ -667,7 +667,7 @@ def calc_tide_index(crossid, nodeid, date_list, roads_dir_dict, date_type=None):
# 构建对向进口道对 # 构建对向进口道对
subtend_road_pair = gen_subtend_road_pair(roads_dir_dict) subtend_road_pair = gen_subtend_road_pair(roads_dir_dict)
for date in date_list: for date in date_list:
max_am_flow, max_pm_flow, tide_index, max_am_flow_road, max_pm_flow_road = 0, 99999999999, 0, '', '' max_am_flow, max_pm_flow, tide_index, max_am_flow_road, max_pm_flow_road = 0, 0, 0, '', ''
if date not in date_am_delay_info_dict.keys() or date not in date_pm_delay_info_dict.keys(): if date not in date_am_delay_info_dict.keys() or date not in date_pm_delay_info_dict.keys():
tide_index_list.append(tide_index) tide_index_list.append(tide_index)
continue continue
@ -694,7 +694,7 @@ def calc_tide_index(crossid, nodeid, date_list, roads_dir_dict, date_type=None):
continue continue
subtend_road_am_flow = am_inroad_info_dict[subtend_road_pair[max_am_flow_road]].delay_info.car_num if subtend_road_pair[max_am_flow_road] in am_inroad_info_dict.keys() else 0 subtend_road_am_flow = am_inroad_info_dict[subtend_road_pair[max_am_flow_road]].delay_info.car_num if subtend_road_pair[max_am_flow_road] in am_inroad_info_dict.keys() else 0
# 如果进口道流量小于20 则无意义 # 如果进口道流量小于20 则无意义
if min(subtend_road_am_flow, max_am_flow) < 20: if min(subtend_road_am_flow, max_am_flow) < 10:
tide_index_list.append(tide_index) tide_index_list.append(tide_index)
continue continue
@ -709,21 +709,21 @@ def calc_tide_index(crossid, nodeid, date_list, roads_dir_dict, date_type=None):
tide_index_list.append(tide_index) tide_index_list.append(tide_index)
continue continue
subtend_road_pm_flow = pm_inroad_info_dict[subtend_road_pair[max_pm_flow_road]].delay_info.car_num subtend_road_pm_flow = pm_inroad_info_dict[subtend_road_pair[max_pm_flow_road]].delay_info.car_num
if min(subtend_road_pm_flow, max_pm_flow) < 20: if min(subtend_road_pm_flow, max_pm_flow) < 10:
tide_index_list.append(tide_index) tide_index_list.append(tide_index)
continue continue
# 如果早晚高峰的最大流量进口道不处于同一个对向对中,则无意义 # 如果早晚高峰的最大流量进口道不处于同一个对向对中,则无意义
if max_pm_flow_road != max_am_flow_road and max_pm_flow_road != subtend_road_pair[max_am_flow_road]: if max_pm_flow_road != max_am_flow_road and max_pm_flow_road != subtend_road_pair[max_am_flow_road]:
tide_index_list.append(tide_index) tide_index_list.append(tide_index)
continue continue
Fam = max(max_am_flow_road, subtend_road_am_flow) / min(max_am_flow_road, subtend_road_am_flow) Fam = max(max_am_flow, subtend_road_am_flow) / min(max_am_flow, subtend_road_am_flow)
Fpm = max(max_pm_flow_road, subtend_road_pm_flow) / min(max_pm_flow_road, subtend_road_pm_flow) Fpm = max(max_pm_flow, subtend_road_pm_flow) / min(max_pm_flow, subtend_road_pm_flow)
if Fam >= 1.5 and Fpm >= 1.5 and max_pm_flow_road == subtend_road_pair[max_am_flow_road]: if Fam >= 1.5 and Fpm >= 1.5 and max_pm_flow_road == subtend_road_pair[max_am_flow_road]:
tide_index = min(Fam, Fpm) / max(Fam, Fpm) tide_index = round(min(Fam, Fpm) / max(Fam, Fpm), 2)
elif min(Fam, Fpm) <= 0: if min(Fam, Fpm) <= 0:
tide_index = 0 tide_index = 0
elif max_pm_flow_road == max_am_flow_road: if max_pm_flow_road == max_am_flow_road:
tide_index = Fam * Fpm tide_index = round(Fam * Fpm, 2)
tide_index_list.append(tide_index) tide_index_list.append(tide_index)
return tide_index_list return tide_index_list
@ -739,8 +739,6 @@ def gen_subtend_road_pair(roads_dir_dict):
subtend_dir = src_reverse[dir] subtend_dir = src_reverse[dir]
if subtend_dir in tmp_road_dir.keys() and tmp_road_dir[subtend_dir]['in'] != '-': if subtend_dir in tmp_road_dir.keys() and tmp_road_dir[subtend_dir]['in'] != '-':
subtend_road_pair[tmp_road_dir[dir]['in']] = tmp_road_dir[subtend_dir]['in'] subtend_road_pair[tmp_road_dir[dir]['in']] = tmp_road_dir[subtend_dir]['in']
tmp_road_dir.pop(dir)
tmp_road_dir.pop(subtend_dir)
return subtend_road_pair return subtend_road_pair

View File

@ -87,7 +87,7 @@ def do_get_user_info(params, token):
user_area_ids = db_user.query_areaid_list(user['userno']) user_area_ids = db_user.query_areaid_list(user['userno'])
user_area_info = [] user_area_info = []
for area_id in user_area_ids: for area_id in user_area_ids:
user_area_info.append(all_area_info[area_id]) user_area_info.append(all_area_info[int(area_id)])
res = make_common_res(0, 'ok') res = make_common_res(0, 'ok')
res['data'] = user_area_info res['data'] = user_area_info
res['token'] = user_t res['token'] = user_t