加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

48再谈Transcad索引转换

(2018-10-06 16:40:37)
分类: TransCAD

0 背景

其实早该写这篇博客了,之前东爷问我索引的有关问题,给他进行了一些回答。其实之前自己写过一篇博客介绍索引转换:http://blog.sina.com.cn/s/blog_c2c66a9f0102vlwl.html。当时写的比较笼统吧,层次感不强。这次结合东爷在问我,就再整理一下。

1 TC建模编号的常规操作

这里先介绍我习惯的一个常规操作,然后再解释原因吧,先说怎么做,再说为什么,之前的博客一直在说为什么。

http://s11/mw690/003z9hIHzy7obIb60Bkca&690

 

上图展示了常见的索引对象及其转换,也是我习惯的操作方式,可以看出小区ID是关键的中间铆接对象,因此我建立矩阵都习惯基于小区ID建立矩阵。

2 索引转换的原因及其方法

1)原因

索引转换的原因在于不同的场景下,需要有不同的矩阵编号,如:

1)交通分配要求用路网节点的id作为编号进行分配;

2)用自己的小区编码zoneid有利于建模者的自我识别;

3)而用系统小区默认的id有利于软件的自我管理。

由于由不同的目的的需要,也就要求要能够根据需要随时变换矩阵的索引。

2)方法

理清了索引对象和转换的原因,再说明一下输入输出关系。

1)结合四阶段法,最终的输出是分配步骤,所要求的索引是路网节点图层的id

2)而从建模者的角度,一套自己的编号是非常有必要的,所以输入的索引是自己小区的zoneid,包括在输入小区的相关属性等方面,用自己的编码比系统的编码要有效、也便于自我管理的多;

3)所以这就涉及到从小区的zoneid到路网节点id的转换;

4)我通常采用的不是直接转换法(也就是说所谓基于zoneid建立矩阵),我通常习惯建立矩阵的时候基于小区id建立,通过小区id作为中间界值,进行转换。而关于转换的具体映射关系,可以参考上图。

3)注意事项

1)索引转换的关键点是要找准映射关系,需要明白各种映射情况。

2)我是通常直接从小区连接到路网节点的,而不进行小区质心的输出,也就是说我的填充到路网节点层的字段是小区的字段,而不是小区质心文件的字段;

3)最后转换到路网节点图层的id上是利用路网节点的idindex里的填充对象这一映射关系完成的,因此,按道理如果我直接在index里面填充zoneid而不是填充id,那么可以直接从zoneid完成到路网节点图层id的转换,但实际上在填充index的时候只能Fill  id,而不能Fill  zoneid,这一步是没法选择填充字段的,只能选择填充到路网节点图层的哪个字段。

4)如果我是基于zoneid建立的矩阵,路网节点图层上又是填充的小区id的话,那么按道理我可以先利用小区文件进行从zoneid到小区id的转换,再利用路网节点图层填充到index字段上的小区id和路网节点图层的id再进行转换。也就是说从zoneid到路网节点图层的id做两步转换,这期间利用小区图层的id作为一个中间界值。但实际上这样操作是会报错的。

5)前面我讲到,我是不进行小区质心文件的输出的,那么如果进行小区质心文件的输出,在输出小区质心文件的时候,是可以选择编号是基于小区的id还是zoneid的,这个时候是可以进行调整的,将质心文件的id调整成小区的zoneid。这样由质心文件连接到路网节点图层填充过去的id(不可选择)自然也就是小区的zoneid了,因此这样即使基于zoneid建立矩阵,转换到路网节点图层id也只需要一步转换,至于这样是否可以索引转换成功,还尚未进行尝试,不过推测这样应该是可以成功的。


http://s13/small/003z9hIHzy7A6jde0agfc&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有