您现在的位置是:首页 >技术教程 >【TransCad】采用重力模型法实现交通分布预测网站首页技术教程

【TransCad】采用重力模型法实现交通分布预测

Douglassssssss 2024-06-14 17:17:21
简介【TransCad】采用重力模型法实现交通分布预测

前言

明天就要上机练习重力模型了,我今天提前模拟一下子,就用昨天建好的路网(具体看我上一篇博客)。

回顾

我们打开昨天保存好的工作空间(.wrk),这样就可以呈现我们昨天最后关闭软件时还保持着打开的所有窗口,这样就不用一个个再去打开了,保存方法是点击File-Save Workspace

在这里插入图片描述

我们建好了道路层、小区层、点层,道路层有通行能力、时间、速度、长度(是没有配准的)等属性,小区层有未来的PA数据字段,现状OD矩阵我们也导入进来了。

准备工作

小区质心层的导入

我们目前的小区层只是小区层,没有和道路关联起来。根据交通规划的知识,质心可以是小区的形心点,继承小区的所有的属性数据,通过质心层便可以对小区层和道路层进行关联。

我们首先将小区层置为当前,也就是下图中下拉箭头选择zone层,名字是当初建立地理信息文件时我们自己取的。tc中很多操作都是要分图层进行的,不然相应的操作按钮是灰色的,我们需及时切换到所需要的图层。

在这里插入图片描述

接着将小区的质心导出,执行Tools-Export命令,在To下拉列表里选择Standard Geographic File,勾选上Export as Centroid Points单选按钮,点击OK,保存文件,我就取名叫zhixin。

在这里插入图片描述

这里的ID我们选的是默认生成的ID,而不是我们自己创建的myid。

选我们自己创建的也行,但是可能后面会有一些问题

然后点击Map-Layers,再点击Add Layer将刚才导出的质心添加为图层,点击下面的Rename,修改名字为zhixin

在这里插入图片描述
在这里插入图片描述

制作小区连杆

下面我们制作小区连杆,可以理解为给小区搞一个出口,连接到路上。

我们切换到点层point,在属性表里添加一列index。老师讲这是为了将质心和小区通过一个中间媒介关联起来。好比你的学号和身份证号,其实都指的是你,但是软件不知道,需要一个东西来关联。让我想到Excel里的vlookup函数查询好像就是这样。

在这里插入图片描述

再将图层置为小区层,执行Tools-Map Editing-Connect命令。弹出来的窗口会有两个选项卡,第一个可以来确定是质心连到路的顶点,还是直接连到路上,以及连几条路。当可以连多条路时,Connect features within就需要好好考虑,它表示的是在多少米范围内的点可以连接,如果太大的话,可以1号小区就连到别的小区的路上去了。

这里我们就只连到点上,也只连一条路,所以不用改什么,我们进入Fill选项卡。

在这里插入图片描述

Fill窗口里,Node field选择我们刚才新建的index的,并勾选上IDs from TAZ layer。点击OK,回到刚才的点层数据表,可以发现有些点的index多了一些数据,这些数据就是这些点对应的小区层的ID。

在这里插入图片描述

在这里插入图片描述

同时放大图片我们可以看到,小区的形心和道路端点多了一根线。

在这里插入图片描述

这些多出来的线其实是我们虚拟的,为了关联上质心和道路,但是它实际上又真正是一条路,有它各自的属性。因此我们为了不让它影响实际的路网,将其通行能力设置的很大,比如10000,时间设置的很小,比如0.01。可以理解为车辆从小区里面出来就到了路上。

我们打开道路层的数据表,修改填充相应的数据。

在这里插入图片描述
在这里插入图片描述

建立质心选择集和路网文件

为了后续重力模型所需的阻抗矩阵,我们将所有的质心设为一个选择集,这样在路网输出点与点之间的距离或者通行时间时,可以只选择质心,而不选择所有点。

切换到点层,点击Selection-Select by Condition,输入公式index <> null,也就是判断不为空。因为只有质心的index字段才不为空。

在这里插入图片描述

可以打开属性表,看到这些质心被选上了。

在这里插入图片描述

最后我们建立路网文件(.net),将道路层置为当前,执行Networks/Paths-Create,选择所有线层属性和节点层属性,点击OK。

在这里插入图片描述
至此,我们的基础交通数据就建立好啦,下面开始进行预测。

重力模型法进行交通分布预测

建立阻抗矩阵

我们以通行时间作为自变量,建立阻抗函数,计算得到阻抗矩阵。

点击Networks/Paths-Multiple Paths,选择时间,From和To都选择我们刚刚建立的选择集zhixin。

在这里插入图片描述

我们可以发现,明明我们是有AB和BA的时间的,但是这里只显示一个,说明软件识别到AB和BA前缀,这也是我们当初讲的,要加这个前缀的原因吧。

点击OK,将其结果保存,如下图所示。

在这里插入图片描述

修改索引

我们可以看到,刚才生成的矩阵,行和列的ID都是点层的ID,我们需要将其切换为小区的ID。

我们点击生成的矩阵窗口,点击上方工具栏的Matrix-Indices,然后点击Add Index

在这里插入图片描述

在这里插入图片描述

第一红框选择的是原来的索引的数据表,原来我们就是点层的ID嘛,下面的红框我们选择index字段,这里面就是对应小区的ID了,Selection就选我们建的zhixin。

其实这里就体现了前面我们多加一列和建立选择集的作用

点击OK后,我们把新的索引给它用上。

在这里插入图片描述

可以看到原来的矩阵行列都变成小区的ID了。

在这里插入图片描述

题外话

做到这里就让我想到了,当初我们建立OD矩阵的时候用的是myid,而重力模型里用的是默认的ID,所以需要把OD矩阵的索引也给它改成软件生成的ID。

看来以后尽量还是用软件生成的ID,如果不想纠结ID对不对得上的话。如果为了显示出来顺序,一定脑子里记得这些ID代表的意义。

重力模型运用

这里我们还需操作一步,将未来的PA数据平衡一下,不然是没办法预测的。

点击Planning-Balance,选择小区层的数据表,Vector1选择P_fur,Vector2选择A_fur。固定交通发生,也就是Hold vector1,进行平衡。别关闭它,后面要用。

在这里插入图片描述

下面进行重力模型运用,点击Planning-Trip Distribution-Gravity Application命令,Dataview选择我们刚才的平衡数据,其他设置为如下。

在这里插入图片描述

之后点击Friction Factors,这里是选择阻抗函数的形式,我们默认是Gamma,参数也先默认,确保矩阵是我们生成的最短时间矩阵。

在这里插入图片描述

点击OK,当你弹出这个窗口,说明就成功了。窗口里是说迭代了3次收敛。

在这里插入图片描述
最后预测的结果如下:

在这里插入图片描述

写在最后

在老师上重力模型之前,我其实先到看书,书上的操作明显更多,也是我看不懂的原因。

首先,我们这里并没有用到现状的OD数据标定,不知道最后的结果怎么出来的。然后,我们的质心连杆也只连了一条。

OD矩阵和PA矩阵,我现在还是有点懵,后面研究下。

这些问题后面有时间再去查查资料,不然有点不知其所以然。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。