Tips on Establishing Macro Traffic Simulation Model of Large Urban Area by TransCAD

使用 TransCAD 建立大型城市交通宏观模型的经验总结

Posted by Aaron on July 12, 2018

最近一段时间完成了一个大型城市交通宏观模型的建模,期间遇到不少问题,请教了百度、谷歌、还有不少大神。

抽了一天时间总结了一下建模过程中遇到的问题,和大家分享讨论,下面一起来看吧。

总体思路

建模的整体思路如下:

  1. 检查路网文件,打断、连接,修改比例尺
  2. 可能还需要在CAD中描出道路线网和小区
  3. 确定研究范围,是否要考虑导入地铁、铁路等
  4. 确定小区划分的
  5. 确定人口、岗位、用地性质等,确定人均日出行次数、人均日吸引次数
  6. 确定 P、A
  7. 确定道路通行能力 Capacity、Speed、Time

导入路网和小区

如果没有现成的 *.dxf 文件,那么就需要先在 CAD 中描出道路线网和小区,路网可以用多段线样条曲线绘制,绘制小区只能用多段线,否则导入会出现不识别的情况。在处理交叉口时,除了不互通的情况以外,其他线段都要打断,并用打开对象捕捉将打断的线条连接起来。

CAD 中描好的图在需要储存为L12版本的 *.dxf 文件

导入时需要将小区图层和线网图层分开导入。

这里分享一个比较快速的导入小区的方法——在 CAD 中无需一个一个绘制小区,可以直接用多段线绘出交叉的路网,将其在交叉点处全部打断,以 line 面层导入到 TC 中,再通过Tools - Geographic Utilities - Line/Area Conversion来转换为 Area,这样处理可以自动将路网所围成的一个个小区域转化为小区。

具体操作如下:

converge

比例尺的处理

先在 TC 菜单栏的 Edit - Preferences 中将单位改为 kilometers

接下统一单位比例尺。先将 CAD 中所绘制的路网和小区的比例尺改成标注的 1 = 现实世界 1m,导入路网后 TC 会为所有线路自动生成Length,将所有路线的 Length 乘以 1.09;对小区面积的处理可以用 CAD 中用 boli 命令直接量出来的数据填入 TC。当量小区数量比较大时,可以先在将 TC 中自动生成的面积复制到 Excel ,批量乘系数后在粘贴回 TC 中。

下面我是反复测试后总结的系数,供参考:

长度换算系数	1.0936

面积换算关系	1.0806^2

归结起来,需要以上操作的原因是 TC 中所设置的单位只是给你看的单位,可以理解成一个标签 (label),而实际导入 CAD 小区路网的过程中,CAD 中国际单位都会被 TC 转化为英制单位(除以1.0936),也就是说导入 TC 后自动生成的路线长度和小区面积都是英制单位的,需要再上面系数转换为国际单位,1米=1.0936132983377码,至于为什么面积的换算系数不是 1.0936^2 ,暂时还真没想通,欢迎讨论。

同时,我们会发现这个系数是非常小的,这些误差对整体的交通分配造成的影响有限,但个人还是建议在一开始阶段就走一遍这几步流程以消除误差因素,避免后期误差滚雪球。

阻抗矩阵对角线的处理

TC 中所生成的阻抗矩阵的对角线均为 0,代表小区内部无出行,这与实际情况是不相符的。这里有两种考虑思路:

  1. 对于一个较小的模型,当小区划分较密时,可以忽略区内交通,也就是直接将阻抗矩阵对角线留为默认(by 艳艳姐)

  2. 对于大型模型,所划分小区密度的往往较小,不足以达到忽略区内出行的程度,需要在对角矩阵中填入参数。

当小区量很大时我们不可能手动填入对角线的所有数据,TC 内有自动生成对角线数据的功能,不过我暂时没有在帮助文件中查询到相关的公式说明,采取 TC 内部生成的方式就像一个黑盒 后来我了解到 TC 中是利用统一定义每个交通分区的相邻小区的数量,通过计算每个交通小区到相邻区的阻抗,用平均阻抗来替代阻抗矩阵中对角线上的数值。

然而我在实际使用过程中遇到了一个致命的问题,一旦模型当小区数量太大、矩阵很大的情况,就极易假死闪退(6.0版本必然);再者,TC 内只能使用前面提到的区内交通模型,无法进行自定义。因此,我在这一过程中用 python 编了个小程序,使用下面公式来计算各小区的区内交通,并自动填充到对角线单元格中:

(面积/3.14)^0.5/50 * 3600

详见文件夹 计算表及小程序\Matrix Line2Diagonals\Line2Diagonals_v2.0 xlsx.py

特殊分析和处理方式

支路流量为 0 的情况

  • 通常出现这种路网层级功能丧失情况,可以先增加一些连接到支路的质心连杆后再看看结果(by 艳艳姐)

  • 如果没有改善,那么原因就可以归结为小区划分的不够细,加密小区吧(by 艳艳姐)

  • 通常 1w 人口划分一个小区为宜(by 顾师兄)

交叉口仿真模拟的设置

如果不是特别研究一个立交口,那么对于一个大范围的模型,可以直接将立交匝道打断,作为十字路口来处理,毕竟 TC 针对的是宏观模拟。

如何批量删除所选的 Line 或 Area

我们常会遇到批量删除的问题,可以用选择工具选中后在菜单栏中 Edit - Delete Set 进行删除(by 顾师兄)

结语

这是头一次建这么大的模型。模型对500多平方公里内的交通路网进行仿真,交通小区达到336个,伴随着庞大的路网数据而来的是无数次的 TC 奔溃闪退、一遍遍的修正 CAD 路网文件和数据,完成过后回头再看这些填过的坑,也算是收获满满。

模型能够顺利完成少不了艳艳姐耐心的指导,期间也请教了顾师兄很多,谢谢你们!手动递茶 :)

最后留个谜题,大家猜猜封顶图片是哪座城 :)
- Over -