从 OpenStreetMap 生成公交(PT)仿真

简介#

本教程将指导您如何仅使用 OpenStreetMap 文件 作为输入,从头开始构建公交(PT)仿真场景。如果您是 SUMO 与 OpenStreetMap 结合使用的新手,OSM 教程也会对您有所帮助。

公交仿真的创建分为两个步骤:

  1. 提取初始路网和公交信息
  2. 计算可行的站点间行程时间并创建公交时刻表

Note

如果您使用 osmWebWizard 工具,当您勾选 Import Public Transport 复选框时,这些步骤将自动执行。

提取初始路网和公交信息#

第一步是提取公交站点和线路信息。通过以下方式调用 netconvert 执行此步骤:

netconvert --osm-files osm.xml -o net.net.xml --osm.stop-output.length 20
    --ptstop-output additional.xml --ptline-output ptlines.xml

其中:

  • --osm-files osm.xml 指向 OpenStreetMap 文件
  • -o net.net.xml 指向要生成的 SUMO 路网文件
  • --osm.stop-output.length 20 定义公交站台的长度(单位:米)
  • --ptstop-output additional.xml 指向要生成的 公交站点文件
  • --ptline-output ptlines.xml 指向定义公交线路的中间文件

计算可行的站点间行程时间并创建公交时刻表#

第二步是运行一个 Python 脚本,执行以下操作:

  1. 为了确定可行的站点间行程时间,针对每条公交线路运行一辆公交车辆进行仿真。
  2. 根据站点间的行程时间信息,为所有线路创建公交时刻表(定时刻表)。

站点间的行程时间是在空路网上确定的。可以很容易地扩展该脚本,以便在现有交通模型中确定站点间的行程时间。但这超出了本教程的范围。通过以下方式调用 ptlines2flows.py 脚本来执行这些步骤:

python tools/ptlines2flows.py -n net.net.xml -s additional.xml -l ptlines.xml
    -o flows.rou.xml -p 600 --use-osm-routes

其中:

  • -n net.net.xml 指向先前使用 netconvert 创建的 SUMO 路网
  • -s additional.xml 指向使用 netconvert 创建的公交站点文件
  • -l ptlines.xml 指向使用 netconvert 创建的公交线路定义文件
  • "-o flows.rou.xml" 指向要生成的公交车辆的 路径 文件
  • "-p 600" 是定时刻表的周期,单位为秒
  • "--use-osm-routes" 表示脚本将采用 osm.xml 中的公交路径,而不是在站点之间创建新的最短路径