最近一段时间完成了一个大型城市交通宏观模型的建模,期间遇到不少问题,请教了百度、谷歌、还有不少大神。
抽了一天时间总结了一下建模过程中遇到的问题,和大家分享讨论,下面一起来看吧。
总体思路
建模的整体思路如下:
- 检查路网文件,打断、连接,修改比例尺
- 可能还需要在CAD中描出道路线网和小区
- 确定研究范围,是否要考虑导入地铁、铁路等
- 确定小区划分的
- 确定人口、岗位、用地性质等,确定人均日出行次数、人均日吸引次数
- 确定 P、A
- 确定道路通行能力 Capacity、Speed、Time
导入路网和小区
如果没有现成的 *.dxf
文件,那么就需要先在 CAD 中描出道路线网和小区,路网可以用多段线
或样条曲线
绘制,绘制小区只能用多段线
,否则导入会出现不识别的情况。在处理交叉口时,除了不互通的情况以外,其他线段都要打断,并用打开对象捕捉将打断的线条连接起来。
CAD 中描好的图在需要储存为L12版本的 *.dxf 文件
。
导入时需要将小区图层和线网图层分开导入。
这里分享一个比较快速的导入小区的方法——在 CAD 中无需一个一个绘制小区,可以直接用多段线
绘出交叉的路网,将其在交叉点处全部打断,以 line 面层导入到 TC 中,再通过Tools - Geographic Utilities - Line/Area Conversion
来转换为 Area,这样处理可以自动将路网所围成的一个个小区域转化为小区。
具体操作如下:
比例尺的处理
先在 TC 菜单栏的 Edit - Preferences
中将单位改为 kilometers
。
接下统一单位比例尺。先将 CAD 中所绘制的路网和小区的比例尺改成标注的 1 = 现实世界 1m
,导入路网后 TC 会为所有线路自动生成Length
,将所有路线的 Length
乘以 1.09
;对小区面积的处理可以用 CAD 中用 bo
和 li
命令直接量出来的数据填入 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,代表小区内部无出行,这与实际情况是不相符的。这里有两种考虑思路:
-
对于一个较小的模型,当小区划分较密时,可以忽略区内交通,也就是直接将阻抗矩阵对角线留为默认(by 艳艳姐)
-
对于大型模型,所划分小区密度的往往较小,不足以达到忽略区内出行的程度,需要在对角矩阵中填入参数。
当小区量很大时我们不可能手动填入对角线的所有数据,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 路网文件和数据,完成过后回头再看这些填过的坑,也算是收获满满。
模型能够顺利完成少不了艳艳姐耐心的指导,期间也请教了顾师兄很多,谢谢你们!手动递茶 :)