53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
"""创建优化的路由文件:截断路由,只保留控制区域"""
|
|
import xml.etree.ElementTree as ET
|
|
|
|
control_edges = [
|
|
"G1523_AM3_4.1", "G1523_AM3_4.2", "G1523_AM3_4.3",
|
|
"G1523_AM3_4.4", "G1523_AM3_4.5", "G1523_AM3_4.6",
|
|
"G1523_AM4", "G1523_AM5", "G1523_AM6",
|
|
"G1523_AM6.1", "G1523_AM6.2", "G1523_AM6.3", "G1523_AM6.4", "G1523_AM6.5", "G1523_AM6.6",
|
|
"G1523_AM7", "G1523_AM7.1", "G1523_AM7.2", "G1523_AM8", "G1523_AM8.1", "G1523_AM8.2"
|
|
]
|
|
|
|
control_set = set(control_edges)
|
|
|
|
# 解析原始路由
|
|
tree = ET.parse("sumo_resource/routes_filtered.xml")
|
|
root = tree.getroot()
|
|
|
|
# 创建新的路由文件
|
|
new_root = ET.Element('routes')
|
|
new_root.set('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance')
|
|
new_root.set('xsi:noNamespaceSchemaLocation', 'http://sumo.dlr.de/xsd/routes_file.xsd')
|
|
|
|
# 复制vType定义
|
|
for vtype in root.findall('vType'):
|
|
new_root.append(vtype)
|
|
|
|
# 创建单一主路由(只包含控制区域)
|
|
main_route = ET.SubElement(new_root, 'route')
|
|
main_route.set('id', 'main_route')
|
|
main_route.set('edges', ' '.join(control_edges))
|
|
|
|
print(f"主路由边数: {len(control_edges)}")
|
|
|
|
# 只保留使用主路由的车辆
|
|
vehicle_count = 0
|
|
for vehicle in root.findall('vehicle'):
|
|
new_vehicle = ET.SubElement(new_root, 'vehicle')
|
|
new_vehicle.set('id', vehicle.get('id'))
|
|
new_vehicle.set('type', vehicle.get('type'))
|
|
new_vehicle.set('depart', vehicle.get('depart'))
|
|
new_vehicle.set('departLane', 'random')
|
|
new_vehicle.set('departSpeed', 'max')
|
|
new_vehicle.set('route', 'main_route')
|
|
vehicle_count += 1
|
|
|
|
print(f"车辆总数: {vehicle_count}")
|
|
|
|
# 保存
|
|
tree = ET.ElementTree(new_root)
|
|
ET.indent(tree, space=' ')
|
|
tree.write("sumo_resource/routes_optimized.xml", encoding='UTF-8', xml_declaration=True)
|
|
print("已保存到: sumo_resource/routes_optimized.xml")
|