基于路段/车道的车辆排放输出会写入在路段或车道上收集的车辆污染物排放的绝对值和归一化值。绝对值是每个路段/车道上每种污染物的排放总和,归一化值则是根据时间间隔时长和路段/车道长度进行归一化后的数值。
请注意,SUMO 中的每种车辆类型都可能属于某个排放等级(参见 车辆、车辆类型和路径定义 和 模型/排放)。使用排放输出时,您应确保您的车辆在排放等级分布上反映了一个真实的车辆群体。
在仿真中实例化#
基于路段的排放输出#
基于路段的排放输出在 additional-file 中定义,方式如下:
<edgeData id="<DETECTOR_ID>" type="emissions" period="<PERIOD>" file="<OUTPUT_FILE>" [excludeEmpty="true"]/>
基于车道的排放输出#
基于车道的排放输出在 additional-file 中定义,方式如下:
<laneData id="<DETECTOR_ID>" type="emissions" period="<PERIOD>" file="<OUTPUT_FILE>" [excludeEmpty="true"]/>
属性(适用于基于路段和基于车道的排放输出)#
| 属性名称 | 值类型 | 描述 |
|---|---|---|
| id | id (字符串) | 探测器的 id |
| file | 文件名 | 输出文件的路径。路径可以是相对路径。 |
| period (别名 freq) | int (时间) | 探测器收集的数值的聚合周期。如果未给出,则聚合开始和结束之间的整个时间范围。 |
| begin | int (时间) | 开始写入的时间(早于此时间开始的间隔将被丢弃)。如果未给出,则使用仿真的开始时间。 |
| end | int (时间) | 结束写入的时间(在此时间或之后开始的间隔将被丢弃)。如果未给出,则使用仿真的结束时间。 |
| withInternal | bool | 如果设置,交叉口内部的路段/车道也将被写入;默认值:false。 |
| maxTraveltime | float (时间) | 如果仅发生非常小的移动,则写入的最大行进时间(秒);默认值 100000。 |
| minSamples | float (时间) | 车辆必须在路段/车道上的最小总秒数,以将其视为非空;默认值:>0。 |
| excludeEmpty | 字符串 (true, false, defaults) | 如果设置为 true,则在此期间未被任何车辆使用的路段/车道将不会被写入;默认值:false。如果设置为 "defaults",则会根据路段长度和最大速度打印出行进时间和排放的默认值。 |
| vTypes | 字符串 | 要考虑的车辆类型 id 的空格分隔列表。如果未给出,将考虑所有 vTypes。 |
| writeAttributes | 字符串列表 | 要写入的属性名称列表(默认为所有属性) |
| edges | 字符串列表 | 将输出限制为给定的路段 id 列表 |
| edgesFile | 文件名 | 将输出限制为文件中给定的路段列表(每行一个 edgeID,或带有 'edge:' 前缀的 id,如选择文件中所示) |
| aggregate | bool | 是否将所有路段的交通统计聚合为单个值(路段 id 将为 AGGREGATED)。 |
生成的输出#
基于路段的网络状态#
基于车道的网络状态#
值描述#
Caution
请注意,与燃料相关的输出单位已随 SUMO 1.14.0 从升变为毫克。 如需旧行为,请使用选项 --emissions.volumetric-fuel。
| 名称 | 类型 | 描述 |
|---|---|---|
| begin | (仿真) 秒 | 收集数值的第一个时间步长 |
| end | (仿真) 秒 | 收集报告数值的最后一个时间步长 + DELTA_T |
| edge@id | (路段) id | 报告路段的名称 |
| lane@id | (车道) id | 报告车道的名称 |
| sampledSeconds | s | 在路段/车道上测量到的车辆秒数(如果车辆进入/离开路段/车道,可能是亚秒)。此值是所有车辆测量时间的总和。 |
| traveltime | s | 通过路段/车道所需的时间,请注意这只是基于平均速度的估计值,并非车辆所需的确切时间。 |
| CO_abs | mg | 在聚合期间,该车道/路段上的车辆排放的 CO 总量 |
| CO2_abs | mg | 在聚合期间,该车道/路段上的车辆排放的 CO2 总量 |
| HC_abs | mg | 在聚合期间,该车道/路段上的车辆排放的 HC 总量 |
| PMx_abs | mg | 在聚合期间,该车道/路段上的车辆排放的 PMx 总量 |
| NOx_abs | mg | 在聚合期间,该车道/路段上的车辆排放的 NOx 总量 |
| fuel_abs | mg | 在聚合期间,该车道/路段上的车辆消耗的燃料总量 |
| electricity_abs | Wh | 在聚合期间,该车道/路段上的车辆消耗的电力总量 |
| CO_normed | g/km/h | 该时间间隔内的 CO 排放量,按时间和路段/车道长度归一化 |
| CO2_normed | g/km/h | 该时间间隔内的 CO2 排放量,按时间和路段/车道长度归一化 |
| HC_normed | g/km/h | 该时间间隔内的 HC 排放量,按时间和路段/车道长度归一化 |
| PMx_normed | g/km/h | 该时间间隔内的 PMx 排放量,按时间和路段/车道长度归一化 |
| NOx_normed | g/km/h | 该时间间隔内的 NOx 排放量,按时间和路段/车道长度归一化 |
| fuel_normed | g/km/h | 该时间间隔内的燃料消耗量,按时间和路段/车道长度归一化 |
| electricity_normed | W/km | 该时间间隔内的电力消耗量,按时间和路段/车道长度归一化 |
| CO_perVeh | mg | 假设车辆通过该路段时产生的 CO 排放量 |
| CO2_perVeh | mg | 假设车辆通过该路段时产生的 CO2 排放量 |
| HC_perVeh | mg | 假设车辆通过该路段时产生的 HC 排放量 |
| PMx_perVeh | mg | 假设车辆通过该路段时产生的 PMx 排放量 |
| NOx_perVeh | mg | 假设车辆通过该路段时产生的 NOx 排放量 |
| fuel_perVeh | mg | 假设车辆通过该路段时所需的燃料消耗量 |
| electricity_perVeh | Wh | 假设车辆通过该路段时所需的电力消耗量 |
注意事项#
注意事项:
- 默认情况下,所有路段都会被写入,即使没有车辆在上面行驶。可以通过将
excludeEmpty属性设置为 true 来禁用此功能。 - 间隔结束时间是间隔开始时间 + 聚合时间,这意味着数值是在这些步骤内收集的,不包括结束时间本身。如果仿真在最后一个间隔结束前结束,则该间隔将被截断。
- 输出文件将被生成,不必预先存在,如果已存在则会在没有任何警告的情况下被覆盖。输出文件所在的文件夹必须存在。
- 如果您只需要特定时间段内的网络状态信息,可以通过提供属性 "
begin="<TIME>\[,<TIME>\]+"" 和 "end="<TIME>\[,<TIME>\]+"" 来限制转储的生成。当至少给出一个组合时,仅当当前时间存在相应的 begin/end 对时才会写入转储。这意味着,仅当 begin[x] <= INTERVAL_END 且 end[x] >= INTERVAL_BEGIN 时,才会保存这些间隔。如果未给出 begin/end 的值,所有转储将覆盖整个仿真。
Note
perVeh 输出被归一化为车辆行驶完整路段长度时的平均消耗值。当车辆在该路段上出发或到达且未行驶完整长度时,这可能导致比乘以车辆数量后从 abs 输出中预期的值更高。
另请参阅#
- 基于路段/车道的网络性能指标输出 和 基于路段/车道的车辆噪声排放输出,它们具有类似的格式。
- mpl_dump_onNet.py 脚本可以将此输出的值显示为彩色网络(并且存在更多可视化工具)。
讨论#
省略空路段/车道#
2009.07.17:我排除了计算通过车道/路段的平均每车排放量,尽管 "excludeEmpty" 属性已经涵盖了几乎相同的功能。我不确定这是否有意义。
此外,我们也许还应该决定是否也应该为行进时间计算这样做。
值范围#
2009.07.17:为期间内绝对 (..._abs) 排放量和通过车道/路段的平均每车排放量生成的值现在以 mg 为单位给出,以便在仅使用小数点后的数字时也能显示较低的值。我对结果并不十分满意。如果一辆车辆以 10m/s 的速度通过 390m 长的车道,假设其排放的 CO 少于 0.005mg,因此不会出现在输出中;另一方面,如果观察拥堵情况,CO2 的排放量可能攀升至 CO_perVeh="21246834688.00"(当然,如果车辆真的静止不动,它们会变成无穷大)。我认为我们必须评估系统的行为方式。
