OSM Web Wizard创建额外XML输出文件问题求助
解决OSM Web Wizard中SUMO额外输出文件生成问题
问题分析
你当前能生成FCD和排放文件,但额外输出(如edge级排放数据)失败,核心问题在于额外配置文件未被SUMO正确加载,或者文件格式有误。
正确实现步骤
1. 编写正确格式的额外配置文件
创建独立的XML文件(比如命名为additional.xml),内容直接使用标准XML语法(无需转义<>,因为是直接写入文件而非Python字符串):
<additional> <edgeData id="dump" type="emissions" file="emissions-dump.xml" excludeEmpty="true"/> </additional>
注意:如果之前手动写文件时用了
<这类转义字符,会导致XML格式错误,SUMO无法解析,必须改成原生的<>标签。
2. 确保SUMO启动时加载该文件
方式一:通过additionalFiles列表加载
先将额外文件路径加入additionalFiles,原有代码会自动添加-a参数:
# 把额外文件路径添加到列表中 self.additionalFiles.append("additional.xml") # 原有参数处理代码会自动生效 if len(self.additionalFiles) > 0: opts += ["-a", ",".join(self.getRelative(self.additionalFiles))]
方式二:手动添加启动参数
如果不想依赖additionalFiles,直接在opts数组中追加-a参数:
opts += ["-a", "additional.xml"]
3. 验证路径正确性
所有文件路径需与SUMO启动的工作目录一致,避免路径错误:
- 可以用绝对路径确保SUMO能找到文件:
import os additional_path = os.path.abspath("additional.xml") opts += ["-a", additional_path]
- 检查生成的
.sumocfg文件,确认<input>节点下包含额外文件配置:
<input> <net-file value="your_net.net.xml"/> <additional-files value="additional.xml"/> </input>
如果没有该配置,说明启动参数未正确传递,需检查opts的参数顺序或是否存在冲突。
4. 排查常见错误
- 额外文件格式错误:XML标签必须闭合,属性值需加引号
- 路径错误:SUMO找不到额外文件,导致配置不生效
- 参数冲突:确保
--save-configuration不会覆盖-a参数的设置
内容的提问来源于stack exchange,提问作者Zaiat Gui
相关产品推荐
相关产品推荐

