FCD(浮动车数据)导出包含网络中每个车辆在每个时间步的位置、速度以及其他信息。该输出的行为类似于为每辆车安装了一个超高精度、高频率的 GPS 设备。可以使用 TraceExporter 工具 对输出进行进一步处理,以调整频率、设备费率、准确性和数据格式。
在仿真中实例化#
当设置选项 --fcd-output <FILE> 时,仿真会生成此输出。<FILE> 是输出将被写入的文件名。任何同名的其他文件将被覆盖,目标文件夹必须存在。
默认情况下,fcd-output 对仿真中的所有车辆和行人启用,并在每个仿真步输出。使用设备分配选项或参数(即 --device.fcd.probability 0.25)可以减少生成 fcd 输出的车辆集。输出周期可以通过选项 --device.fcd.period <TIME> 设置。为了延迟输出(即直到某些预热时间过去),可以使用选项 --device.fcd.begin <TIME>。
生成的输出#
生成的 XML 文件如下所示:
<fcd-export>
<timestep time="<TIME_STEP>">
<vehicle id="<VEHICLE_ID>" x="<VEHICLE_POS_X>" y="<VEHICLE_POS_Y>" angle="<VEHICLE_ANGLE>" type="<VEHICLE_TYPE>"
speed="<VEHICLE_SPEED>"/>
... more vehicles ...
</timestep>
... next timestep ...
</fcd-export>
“On”列中没有勾号的值需要显式启用,而“Meso”列中没有勾号的值在中观仿真中不可用。
| 名称 | 类型 | On | Meso | 描述 |
|---|---|---|---|---|
| timestep | (仿真) 秒 | x | x | 此 timestep 元素中描述的值所对应的时间步长 |
| id | id | x | x | 车辆的 id |
| x | m 或经度 | x | x | 车辆的绝对 X 坐标(前保险杠中心)。该值取决于给定的地理投影 |
| y | m 或纬度 | x | x | 车辆的绝对 Y 坐标(前保险杠中心)。该值取决于给定的地理投影 |
| z | m | (x) | x | 车辆的 z 值(前保险杠中心)。 注意: 仅当网络包含高程数据时,此值才存在 |
| angle | 度 | x | x | 车辆的角度,采用导航标准(0-360 度,顺时针方向,0 点在 12 点钟位置) |
| type | id | x | x | 车辆类型的名称 |
| speed | m/s | x | x | 车辆的速度 |
| pos | m | x | x | 车辆的行驶位置,从当前车道起点测量 |
| lane | id | (x) | 当前车道的 id(仅在微观仿真中可用)。 | |
| edge | id | (x) | x | 当前路段的 id(仅在中观仿真中可用)。 |
| slope | 度 | x | x | 车辆的坡度(度)(等于当前位置道路的坡度) |
| signals | 位集 | 信号状态信息(转向灯等) | ||
| acceleration | m/s2 | 纵向加速度 | ||
| accelerationLat | m/s2 | 横向加速度(仅在启用子车道模型时) | ||
| distance | m | x | 车辆的公里数/里程位置。 | |
| odometer | m | x | 里程表值(出发后行驶的距离)。 | |
| vehicle | id | x | 行人当前乘坐的车辆的 id(仅对行人可用) | |
| posLat | m | 车道上的横向位置 | ||
| speedLat | m/s | 横向速度(如果车辆向右移动则为负值) | ||
| leaderID | id | 前导车辆的 id | ||
| leaderSpeed | m/s | 前导车辆的速度 | ||
| leaderGap | m | 与前导车辆的间距 | ||
| segment | m | x | 当前路段内的段索引 | |
| queue | m | x | 当前路段内的队列索引 | |
| entryTime | m | x | 车辆进入当前段的时间 | |
| eventTime | m | x | 车辆可以离开当前段的最早时间 | |
| blockTime | m | x | 车辆被阻止离开当前段的时间(如果未被阻止则为 -1) | |
| tag | string | 正在写入的是车辆、集装箱还是行人(主要用于表格输出) |
排放属性#
排放输出中的所有属性也可以添加到 FCD 输出中。需要使用选项 --fcd-output.attributes 来启用它们,见下文。
<configuration>
...
<output>
<fcd-output.attributes value="eclass,CO2,CO,HC,NOx,PMx,fuel,electricity,noise"/>
</output>
...
</configuration>
当设置选项 --fcd-output.geo 时,写入的 (x,y) 坐标将是经度/纬度地理坐标。
精度#
默认情况下,fcd-output 以米为单位返回位置值,精度为 1 厘米。(可通过设置选项 --precision 更改)。如果设置选项 --fcd-output.geo,这些值将是经度和纬度的十进制值,精度为 6 位小数(可通过设置选项 --precision.geo 更改)。
行人和集装箱输出#
仿真中的任何行人或集装箱将导致以下形式的输出:
<fcd-export>
<timestep time="<TIME_STEP>">
<vehicle .../>
...
<person id="..." x="..." y="..." angle="..." type="..." speed="..." pos="..." edge="..." slope="..."/>
...
<container id="..." x="..." y="..." angle="..." type="..." speed="..." pos="..." edge="..." slope="..."/>
...
</timestep>
... next timestep ...
</fcd-export>
如果行人或集装箱在车辆内运输,它们各自的 <person> 和 <container> 元素将作为该车辆的子元素写入。
可以使用选项 --person-fcd-output 将行人和集装箱输出写入单独的文件。如果给出了此选项,指定的文件将仅包含集装箱和行人,而 fcd-output 将仅包含车辆。
过滤/限制输出#
Caution
生成的输出文件可能会变得非常大。要写入 gzip 压缩 的输出文件,只需在输出文件名中加上 .gz 扩展名。您也可以写入 CSV 或 Parquet 输出。
限制生成输出的车辆集#
可以通过控制配备 fcd 设备的车辆集来限制输出到特定的车辆类型或车辆 id。以下示例将输出限制为单个名为 ego 的车辆:
--device.fcd.explicit ego
以下示例将 fcd-output 限制为整个仿真中的单个流量
--device.fcd.probability 0 ...
<flow ...>
<param key="has.fcd.device" value="true"/>
</flow>
限制生成输出的行人和集装箱集#
可以通过控制配备 fcd-(行人)-设备的行人集来限制输出到特定的行人或集装箱类型或行人/集装箱 id。以下示例将输出限制为单个名为 ego 的行人:
--person-device.fcd.explicit ego
以下示例将 fcd-output 限制为整个仿真中的单个 personFlow
--person-device.fcd.probability 0 ...
<personFlow ...>
<param key="has.fcd.device" value="true"/>
</personFlow>
限制位置#
可以通过使用选项 --fcd-output.filter-edges.input-file <FILE> 从文件加载路段列表来限制输出到特定的路段集。此文件的格式与在 netedit 中保存选择时的格式相同:
edge:id1
edge:id2
...
通过形状限制位置#
可以通过使用选项 --fcd-output.filter-shapes 设置 <poly> id 列表来限制输出到指定区域内的车辆。多边形形状 必须已从附加文件加载。
通过传感器范围限制输出#
当并非所有车辆都配备 fcd 设备时,可以通过将选项 --device.fcd.radius 设置为所需的范围(米),将配备设备车辆周围半径内的其他车辆和行人包含在输出中。
更改写入的属性#
选项 --fcd-output.attributes ATTR1,ATTR2,... 限制/扩展写入的属性到给定列表,以自定义输出(可以是上述属性的任意组合)。默认情况下,所有在“on”列中有标记的值都会被写入。 值 all 会启用所有属性(包括排放输出)。还有一些预定义的属性集: - location 指代默认启用的所有位置属性 - emissions 所有直接排放值(CO, CO2 等) - misc 上表中所有默认未选中的值(且不在排放输出中)
其他选项#
- --fcd-output.geo 将输出坐标切换为 WGS84(用于地理参考网络)
- --fcd-output.signals 将信号状态信息添加到输出中
- --fcd-output.distance 将公里数信息添加到输出中
- --fcd-output.acceleration 将加速度数据添加到输出中(使用子车道模型时也包括横向加速度)
- --fcd-output.max-leader-distance FLOAT 当车辆在给定距离内有前导车辆时,添加属性 leaderGap、leaderSpeed、leaderID。否则,leaderID 将为 "",leaderGap、leaderSpeed 将为 -1。
- --fcd-output.params KEY1,KEY2,... 将通用参数添加到输出中(支持设备和跟驰模型参数以及任意用户定义值)
注意#
结合车辆的给定几何形状(形状),您可以构建一些漂亮的动画,例如 NASA WorldWind 或 Google Earth。
可视化示例#
加速度与距离#

使用 plot_trajectories.py 生成。
随时间变化的所有轨迹#

使用 plotXMLAttributes.py 生成。

使用 plot_trajectories.py 生成。
随时间变化的选定轨迹#

使用 plotXMLAttributes.py 生成。

使用 plot_trajectories.py 生成。
基于 FCD 的随时间变化的速度#

使用 plot_trajectories.py 生成。
