剖析TransCAD矩阵索引转换和操作

在上次发布的文章中,只给出了矩阵索引的原理,并没有说明相应的操作注意事项。为了使新用户更容易理解创建索引操作,这次重新发布并补充说明矩阵索引的操作设置。
transcad的数据库自带id字段是自动管理地理要素的需要,这样可以减少用户编辑的工作量,实现自动管理(例如emme软件,添加一个路段,用户需要先添加两个节点fromnode和tonode,然后再添加路段)。
举个例子,在路网维护中,id编号1-10的路段,后来你删除了id=5的路段,新增的路段id就是11,不会是5。如果用户希望重新编号,只要自己添加一个字段,编码后导出新的地理文件的id字段选择为你自己定义的字段即可。
由于地理文件的id字段是自动生成的,基于以上特点,为了方便管理,一般用户会自己进行自定义编码(添加字段编码即可),例如对交通小区的编码。为了提高计算效率和将模型计算结果和gis数据关联,transcad的交通分配等使用数据库自动的id字段值,因此,用户需要做一个“索引”,即把自己的编码和数据库的id对应起来。
emme,visum或者cube,一般会把形心连线和形心点,作为单独的管理对象,甚至在界面里看起来是不同的图层。根据交通分配网络算法等原理,实际上形心连线和形心点,是和路网、公交超级网络都是放在一起参与运算的,是一张网中的辅助link和node的特殊情况。
例如一个形心点连接了2个以上的形心连线,transcad就可以设置是否允许穿越形心(其他软件一般是不允许穿越)。如在emme软件中,建立交通模型数据库时,会让你定义有多少交通小区,如果定义1000个,可以只使用900个形心(当然矩阵都是1000*1000,有点浪费存储空间,emme4以后的矩阵也采取了压缩技术,会好一点),一般把节点1-1000的号码留给形心。
如果后面超过1000个小区了,那可能需要重新定义他的bank(数据库)了。transcad的处理方法是,不管用户的节点自动编码多大和多乱,用户需要做一个自定义交通小区编码和形心节点id的对应表(通过地理分析运算很快就完成,具体的做法是:在节点数据表选择要处理的形心记录到选择集,右击交通小区号码字段,fill填充,用tag方法,然后选择交通小区图层里定义的编码字段即可),这样做的好处是,随时可以把哪些点当做形心,或者哪些路段当做形心连线,不事先约定交通小区数。
例如,高速公路网的运行od数据,相关联的出入口od的形心单独设置,和通常意义的交通小区形心不同,可以在“一张网”中同时方便地管理。一个精细的全市交通模型,有时候针对局部区域的分析,其他区域可以用大区或者中区的形心连线和形心点临时代替,以减少不关心区域的分配计算量。当然,局部的交通区域分析需要细化交通分区,用户也可以随心所欲地切分交通小区并添加形心。
具体地说,自己编号的交通小区是101--105(zone_id字段,可以通过交通小区图层地理分析计算自动得到,前面已经讲述),对应的形心在路网上的节点编号是90001-90005(id字段)。
矩阵索引的另外一个作用是,使用不同对应的编号、字符等显示矩阵,例如可以是地铁站名称显示票价矩阵,也可以索引为站点编号,或者其他的定义编号,这和矩阵标签功能类似。
以上矩阵索引相关内容,在transmodeler中同理。
为了便于用户操作,这里再对创建矩阵索引的界面设置做点说明。
(1)transcad的一个矩阵文件里面可以有很多个矩阵,但他们的有一些相同的基本信息,例如矩阵索引。因此建立矩阵索引是针对一个矩阵文件的所有矩阵的。
(2)矩阵索引有时候需要将矩阵编号从交通小区编码(taz或zone_id)转为节点编码(id),有时候也需要将矩阵编号反过来从节点编码(id)转到交通小区编码(taz或zone_id)。前者主要是指按照交通分区计算得到矩阵,需要在网络中转为节点id编码进行交通分配,公交分配等。
后者主要是指网络中得到的成本skim矩阵,如od对的时间,距离等矩阵,需要转换为交通小区编码进行方式划分计算等。
tip1:通常情况。一般来说,矩阵索引的数据表可以采用网络的节点图层(nodes、endpoits等),节点的数量往往多余矩阵的维度,因此节点图层会有一个选择集(例如形心集合centroids),选择相应数量的节点和矩阵维度对应。
tip2:从交通小区编码(taz或zone_id)转为节点编码(id)。索引取名为taz2id。矩阵现有基本索引中的field要选择交通小区编码,本例中对话框上部的field选为taz。索引后的编码,要选路网节点图层的编码,本例中对话框下部的field选为id。新的索引中,集合selection选择节点图层中预先设置的形心集合centroids。
tip3:从节点编码(id)转到交通小区编码(taz或zone_id)。索引取名为id2taz。矩阵现有基本索引中的field要选择节点编码,本例中对话框上部(现有矩阵索引的编码)的field选为id。索引后的编码,要选交通小区的编码,本例中对话框下部(新矩阵索引的编码)的field选为taz。新的索引中,集合selection仍然选择节点图层中预先设置的形心集合centroids。
tip4:索引后的矩阵维度变小。一般情况下,节点图层选择集(例如形心集合centroids)要素的数量和矩阵维度对应。特殊情况下,也可以只选择一部分矩阵要素在索引转换后显示。例如,全市交通模型中有市内的交通小区形心点2000个,对外交通道口特殊形心50个。
如果矩阵是2050*2050,但索引得到的只要2000*2000的矩阵。譬如方式选择时,希望道路网络2050*2050skim矩阵转为市内交通小区编码,即tip3的情况(这里只是打个比方,当然skim矩阵的时候可以只选2000个市内小区)。这时,对话框下部selection集合中只选择了2000个市内交通小区形心,索引后得到的矩阵就会变成2000*2000。
tip5:索引后的矩阵维度变大。有些情况下,用户对话框上部选择的编码字段的所有值,没有被矩阵现有索引的编号全部包含。简单点说,就是节点图层的形心数量大于矩阵维度,或者说有些要索引的原始id,在矩阵中是没有的。
例如全市矩阵是基于全市网络节点id编号得到的od,现在有一个子区域的矩阵,矩阵编号值仅仅包含全市网络的一部分id,想更新一下这部分数据,但不想单独再选择一次子区域矩阵的形心(或者把小矩阵索引为和大矩阵一致便于操作),就要先把子区域矩阵索引修改一致后进行更新,用户实际上也只是需要使用矩阵的一部分。
这时,对话框上部需要勾选“allow ids not in matrix”,否则会提示出错。弹出界面提示用户:
这些算是高级应用了,初学者即使没碰到这种应用情况,也会接收到类似的界面错误弹出,感到力不从心。主要原因还是没搞清对话框上部是矩阵当前索引的情况设置,下部是矩阵新的索引情况设置,并需要在节点集合中选择合适数量的要素。常见的错误就是tip2和tip3的界面设置搞反了,或者形心集合没选对。
tip6:行列数不同的矩阵索引。transcad的矩阵不一定需要n*n的方阵,可以是m*n,例如停车换乘(p+r)矩阵。这时矩阵的行和列要分别建立索引,即用户界面的user for分别选择rows和columns,二不是选both。
来源:transcad和transmodeler交通软件


LTC6991 时隔摄影的定时拍摄器
digilentchipKIT Cmod主板介绍
典型先进封装选型和设计要点
雷达的种类有哪三种类型
Intel 22nm光刻工艺背后的故事
剖析TransCAD矩阵索引转换和操作
华为是如何实现首款翻转镜头手机的?荣耀7i拆解
苹果怎么更新ios15?
蓝牙中的单模、双模是什么,它们有何不同
国产手机一般的使用寿命有多长时间
物联网设备在新产品中增加安全性
三星2021年将量产量子OLED面板
切割机反转是什么原因
自动驾驶对现阶段汽车市场的影响浅析
无线LED显示屏信息发布系统是如何应用的
虹科分享 | 移动目标防御 | 为什么要关心内存中的攻击?
ESP32-WROOM-32D和ESP32-WROOM-32U模组有哪些不同
在零下温度超级电容和锂电池究竟哪一个更厉害
MOS管如何控制电源的开关?
凌壹科技ITX-GMLT-10C2L嵌入式主板分析