明天就要上机练习重力模型了,我今天提前模拟一下子,就用昨天建好的路网(具体看我上一篇博客)。
我们打开昨天保存好的工作空间(.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矩阵,我现在还是有点懵,后面研究下。
这些问题后面有时间再去查查资料,不然有点不知其所以然。