0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

rH5m_simulink12 来源:TransCAD和TransModeler交通软件 作者:TransInfoTech 2021-07-28 15:41 次阅读

在上次发布的文章中,只给出了矩阵索引的原理,并没有说明相应的操作注意事项。为了使新用户更容易理解创建索引操作,这次重新发布并补充说明矩阵索引的操作设置。

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交通软件

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAD
    CAD
    +关注

    关注

    17

    文章

    1070

    浏览量

    72283

原文标题:深入理解TransCAD矩阵索引转换和操作

文章出处:【微信号:simulink123,微信公众号:MatlabSimulixnk】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)

    第二列…。同理A中的第2行第5个的索引号为22,后面依次类推。 那如何取出A中(1,4),(2,5),(3,1),输入一下代码即可: ind2sub函数 将把矩阵元素的序号转换成对应的下表,其调用格式
    发表于 09-06 10:11

    TI低功耗降压/升压转换器应用手册的主题索引

    电子发烧友网站提供《TI低功耗降压/升压转换器应用手册的主题索引.pdf》资料免费下载
    发表于 09-05 11:30 0次下载
    TI低功耗降压/升压<b class='flag-5'>转换</b>器应用手册的主题<b class='flag-5'>索引</b>

    MATLAB中的矩阵索引

    矩阵进行索引是从矩阵中选择或修改部分元素的一种方式。MATLAB 有几种索引样式,它们不仅功能强大、灵活,而且可读性强、表现力强。矩阵
    的头像 发表于 09-05 09:28 354次阅读
    MATLAB中的<b class='flag-5'>矩阵</b><b class='flag-5'>索引</b>

    一文了解MySQL索引机制

    接触MySQL数据库的小伙伴一定避不开索引索引的出现是为了提高数据查询的效率,就像书的目录一样。 某一个SQL查询比较慢,你第一时间想到的就是“给某个字段加个索引吧”,那么索引是什么
    的头像 发表于 07-25 14:05 223次阅读
    一文了解MySQL<b class='flag-5'>索引</b>机制

    ClickHouse内幕(3)基于索引的查询优化

    ClickHouse索引采用唯一聚簇索引的方式,即Part内数据按照order by keys有序,在整个查询计划中,如果算子能够有效利用输入数据的有序性,对算子的执行性能将有巨大的提升。本文讨论
    的头像 发表于 06-11 10:46 912次阅读
    ClickHouse内幕(3)基于<b class='flag-5'>索引</b>的查询优化

    TC264有矩阵库或三角函数的加速库吗?

    在 illd 上搜索了很长时间,并使用了 Google 等搜索引擎。我似乎没有找到矩阵库或相关的三角函数库。不过,我倒是找到了一个类似于 atan2 的反正切加速函数。
    发表于 03-05 07:47

    Redis官方搜索引擎来了,性能炸裂!

    RediSearch 是一个 Redis 模块,为 Redis 提供查询、二级索引和全文搜索功能。
    的头像 发表于 02-21 10:01 2108次阅读
    Redis官方搜<b class='flag-5'>索引</b>擎来了,性能炸裂!

    协方差矩阵和相关系数矩阵的转化

    协方差矩阵和相关系数矩阵是统计学中常用的概念,在多变量统计分析中起着至关重要的作用。 在进行多变量统计分析时,我们通常会涉及多个变量之间的关系和相互作用。协方差矩阵和相关系数矩阵就是用
    的头像 发表于 01-12 11:02 1683次阅读

    矩阵led扫描频率怎么调

    矩阵LED扫描频率是指LED矩阵在单位时间内刷新显示的次数。LED矩阵是由多个发光二极管(LED)组成的显示设备,通过扫描控制来实现各个LED的亮灭,从而显示出不同的图像或信息。调整矩阵
    的头像 发表于 01-02 17:30 1152次阅读

    导致MySQL索引失效的情况以及相应的解决方法

    的解决方法。 1. 索引列被函数操作 如果在查询条件中对索引列使用了函数操作,例如使用了函数进行聚合、类型转换或者字符串
    的头像 发表于 12-28 10:01 717次阅读

    Mysql索引是什么东西?索引有哪些特性?索引是如何工作的?

    作为开发人员,碰到了执行时间较长的 sql 时,基本上大家都会说” 加个索引吧”。但是索引是什么东西,索引有哪些特性,下面和大家简单讨论一下。
    的头像 发表于 12-24 16:20 1127次阅读
    Mysql<b class='flag-5'>索引</b>是什么东西?<b class='flag-5'>索引</b>有哪些特性?<b class='flag-5'>索引</b>是如何工作的?

    深入剖析高速SiC MOSFET的开关行为

    深入剖析高速SiC MOSFET的开关行为
    的头像 发表于 12-04 15:26 872次阅读
    深入<b class='flag-5'>剖析</b>高速SiC MOSFET的开关行为

    混合矩阵是干什么用的?高清混合矩阵怎么使用?

    混合矩阵是干什么用的?高清混合矩阵怎么使用? 混合矩阵(confusion matrix),也被称为错误矩阵(error matrix),是用来评估分类模型性能的一种工具。它可以对分类
    的头像 发表于 12-04 14:40 992次阅读

    数字隔离器的剖析

    电子发烧友网站提供《数字隔离器的剖析.pdf》资料免费下载
    发表于 11-24 10:41 2次下载
    数字隔离器的<b class='flag-5'>剖析</b>

    Format函数可以传递负索引

    是的, format() 函数可以传递负索引。在使用 format() 函数进行字符串格式化时,可以使用索引来指定要替换的参数位置。正索引从0开始,负索引从-1开始,表示相对于参数列表
    的头像 发表于 11-22 09:45 363次阅读