整体结构( 三 )


文章插图

一个的具体组成,包含:
* ,对应的属性,描述了这个所具有的性质或特点 。(章节将详细说明)
* ,对另一个的引用 。就是与之间的依赖关系,可以存在于相同 class之间,不同 class之间,同一个 block之间,不同的 block之间,甚至不同的level之间也可以有 。
唯一识别一个
一个必须能够唯一的识别出来,就如用身份证来识别一个公民 。它用于
*--应用程序访问一个的时候
*--之间引用的时候
在识别一个的时候,NDS定义了一个完整的ID来描述一个 。但是考虑到数据大小,不同的 block在识别的时候有不同的方法,或者说用到了不同的压缩方法来存储ID 。一个完整的 ID由下面3个部分组成:
1,:用于定位存储在那个tile里面 。一个由level 和tile 组成 。如果我们可用从上下文中明确这个的,这样在当我们引用一个的时候,可用不用指明 。(关于的详细内容,在数据分层和网格划分的时候具体谈及)
2,:定义了所属于的类别,这个概念比较抽象,并且大部分在引用时也不指明这个的类别 。因为的类别在引用的时候很多情况都是不言自明的 。比如link会引用到它的2个,在存储的时候,我们是不会把的类别显示的存储起来,我们也就存下的,至于它的类别,毫无疑问就是,不会是其他 。
3,:在给定的tile下的,给定的class下的,一个唯一的标示号 。一般而言,就是的下标 。
要识别一个完整的,上面3个就可以唯一的定位到一个 。但是在实际的存储过程中,和都不会存储,因为大部分情况下这2个id总是显而易见,不言自明,毫无歧义,所以在引用一个,很多情况就记录下就可以,这样也可以达到减少数据size的目的 。
NDS定义了以下情况需要引用一个
*在不同的 block间引用:比如,block的link引用到nameblock的name,为现实中的道路附上路名 。
*在相同的 block但是不同的level间引用:比如,block的一条lower level link关联到一条upper level link,这个引用为路径规划的时候提供跳层提供依据 。
*在不同的tiles间引用:比如,link引用对应的 line来表示自己的形状 。这时候 line有可能和link存储于不用的tile 。
*在相同的tiles间引用:比如,link所有连接的2个,它们一般会存储在同一tile
3.2
描述了不同的细节 。对每个 class,都提供了一系列的 type 。NDS提供了2种:fixed和 。对于fixed ,当实例化的时候,其fixed 的值必须提供 。而对应 ,这种属性是可选的,它的组织方式为 group形式(以后会详细讲解 group model) 。
3.3
包含了一些变化的数据内容,这部分数据帮助应用程序适应不同的情况 。NDS区分出2种类型的:
*:通过名字我们就知道,类似于全局的数据信息,它关联到多个甚至所有的。通过使用 的信息,应用程序能够使自己适用于特定的 。的信息可以定义为 在一个适用,或者一个,或者一个行政区域里面,甚至可以作为 定义于几个 里面适用 。
*to ablock:对某一个特定的 block适合的信息
3.4to NDS
是一种描述二进制数据,bit流或者文件格式的形式语言 。NDS的数据存储格式就是由来定义和描述 。如果你用描述好你定义的数据格式,它可以自动生成和(就是写数据的代码和读数据的代码,目前可以提供c++或者java代码) 。这样开发人员就不需要考虑数据的序列化问题,人可以转而专注于应用程序的逻辑 。
参考文档:
■~gback//gback--.pdf




【整体结构】■%