FCDOutput

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 WorldWindGoogle Earth

可视化示例#

加速度与距离#

使用 plot_trajectories.py 生成。

随时间变化的所有轨迹#

使用 plotXMLAttributes.py 生成。

使用 plot_trajectories.py 生成。

随时间变化的选定轨迹#

使用 plotXMLAttributes.py 生成。

使用 plot_trajectories.py 生成。

基于 FCD 的随时间变化的速度#

使用 plot_trajectories.py 生成。