此输出选项的原因在于 SUMO 能够计算每个仿真时间步长的排放量。每个车辆的计算值将被记录下来,可用于对网络特定部分进行更深入的分析。这些值取决于为各车辆选择的排放模型。
在仿真中实例化#
要强制 SUMO 生成包含排放输出的文件,请在命令行(或配置)参数中添加 --emission-output <FILE>。<FILE> 是输出将被写入的文件名。任何同名文件将被覆盖,目标文件夹必须存在。
默认情况下,仿真中所有车辆均启用排放输出,且在每个仿真步长输出。使用设备分配选项或参数(即 --device.emissions.probability 0.25)可以减少生成排放输出的车辆集合。输出周期可通过选项 --device.emissions.period <TIME> 设置。要延迟输出(即直到经过一定的预热时间),可以使用选项 --device.emissions.begin <TIME>。
生成的输出#
Caution
请注意,与燃料相关的输出单位已随 SUMO 1.14.0 从升(liters)更改为毫克(milligram)。 若要保持旧行为,请使用选项 --emission-output.volumetric-fuel。
排放输出是一个 xml 文件,包含每个时间步长每辆车的排放值。生成的 XML 文件如下所示:
<emission-export>
<timestep time="<TIME_STEP>">
<vehicle id="<VEHICLE_ID>" eclass="<VEHICLE_EMISSION_CLASS>" CO2="<VEHICLE_CO2>" CO="<VEHICLE_CO>"
HC="<VEHICLE_HC>" NOx="<VEHICLE_NOX>" PMx="<VEHICLE_PMX>" fuel="<VEHICLE_FUEL>" electricity="<VEHICLE_ELECTRICITY>" noise="<VEHICLE_NOISE>" \
route="<VEHICLE_ROUTE>" type="<VEHICLE_TYPE>" waiting="<VEHICLE_WAITING>" lane="<VEHICLE_LANE>" \
pos="<VEHICLE_POS>" speed="<VEHICLE_SPEED>" angle="<VEHICLE_ANGLE>" x="<VEHICLE_POS_X>" y="<VEHICLE_POS_Y>"/>
... more vehicles ...
</timestep>
... the next timestep ...
</emission-export>
所写入值的含义如下表所示。
| Name | Type | Description |
|---|---|---|
| time_step | (simulation) seconds | 此时间步长元素内描述的值所对应的时间步长 |
| id | id | 车辆的 ID |
| eclass | ID | 车辆的排放等级 |
| CO2 | mg/s | 该车辆在当前仿真步长排放的 CO2 量 |
| CO | mg/s | 该车辆在当前仿真步长排放的 CO 量 |
| HC | mg/s | 该车辆在当前仿真步长排放的 HC 量 |
| NOx | mg/s | 该车辆在当前仿真步长排放的 NOX 量 |
| PMx | mg/s | 该车辆在当前仿真步长排放的 PMX 量 |
| fuel | mg/s | 该车辆在当前仿真步长消耗的燃料量 |
| electricity | Wh/s | 该车辆在当前仿真步长消耗的电量 |
| noise | dB | 该车辆在当前仿真步长排放的噪声 |
| route | id | 路线的名称 |
| type | id | 车辆类型的名称 |
| waiting | seconds | 车辆等待的时间 |
| lane | id | 车辆正在行驶的车道名称 |
| pos | meters | 车辆位置,从当前车道起点测量 |
| speed | m/s | 车辆的速度 |
| angle | degree | 车辆的角度 |
| pos_x | --- | 车辆的绝对 X 坐标。该值取决于给定的地理投影。 |
| pos_y | --- | 车辆的绝对 Y 坐标。该值取决于给定的地理投影。 |
Caution
当以亚秒级分辨率运行时,每个仿真步长写入的排放量会被外推到 1 秒内生成的排放量。为避免缩放(从而简化聚合),请设置选项 --emission-output.step-scaled。
其他选项#
- --emission-output.geo 将输出坐标切换为 WGS84(用于地理参考网络)
- --emission-output.attributes ATTR1,ATTR2,... 将写入的属性限制为给定列表(以减少输出)。以下属性是特殊的:
- all: 启用所有属性
- --emission-output.precision 控制输出中的小数位数(默认为 2)
- --emission-output.step-scaled 将写入每步排放量而不是每秒排放量(仅在同时使用选项 --step-length 时相关)
可视化示例#
用户选择的属性可以使用 plotXMLAttributes.py 进行绘制。以已发布的 sumo 场景之一 acosta 为例 (https://github.com/DLR-TS/sumo-scenarios/tree/main/bologna/acosta)。
生成输出#
sumo -c run.sumocfg --emission-output emissions.xml
绘图示例调用#
python plotXMLAttributes.py -x time -y CO2 -s -o CO2_output.png emissions.xml -i id --filter-ids Audinot_10_89 --legend
其中 -x 是 X 轴的属性;-y 是 Y 轴的属性;-s 是显示绘图;-o 是输出文件名;-i 是过滤的属性名称;--filter-ids 是过滤属性名称的值;--legend 是显示所选属性名称的值。
结果图如下所示。

