整体结构( 二 )


整体结构

文章插图

整体结构

文章插图
数据分层主要针对的是和basic map。越是底层的数据,数据量越多,也越详细 。通过过滤掉一些不重要的,减少数据量,把数据抽到高层 。这个过程不断重复,得到更高的层 。可以看出,高层的数据总是底层数据的冗余 。这个过程有编译数据的时候完成 。
引入分层的目的,或者说好处:
* 对于map ,使用高层的数据,可以用很少量的数据就覆盖了大片的区域,地图的绘制会更快,虽然会减少很多细节,但是不会影响用户的使用 。
* 对长距离的route,使用高层数据,可以快速的得到规划的路径,当然,得到的路径主要有些重要道路组成,因为不重要的道路在分层的时候被过滤掉了 。(所以在分层的时候,可以通过连通性的检查,把那些虽然不是很重要,但是连通性好的路也要保留在高层中 。如何分层留给以后会再谈要如何做到这点 。)
在NDS中,我们把地图按比例分为16层(有16个level,具体分层细节以后会讲到,本人对NDS的分层定义极为认可 。) 。很多level都是给map 用的,并不是所有的level的数据都必须提供,比如 level 14和level 15在block很多时候就不提供,确实没有这么多地图细节要呈现给用户,但是留给以后扩展,NDS还是考虑的未来的需求 。对应的level有特殊规定,即最多只能提供5种level,分别是 L13,L10,L8,L6和L4 。其中level 13为block强制需要的,表示最详细的一层路网数据 。(题外话,好像如果你提供其他level的数据,比如L11,好像逻辑上也不会有问题,一个level本身的定义是没有歧义的,但是NDS文档都声明了L13的上层路网数据就是L10 。)
在每个level,会按相同大小的网格分隔成tile,每个level的tile都能够完全覆盖整个地球(一个tile就是一个经度和纬度一样长的面积,当level固定的时候,这个level的tile的经纬度长度就是固定的) 。tile用于方便的访问数据,根据一个地理坐标,我们就可以快速的定位到这个坐标点在那个tile 。
额外说明下,NDS的level和tile的概念非常值得大家学习,以后会专门介绍 。
3
我们按类型把数据分成3个大类:
■: 与导航相关的,所以现实世界存在的对象,就叫 。一句话,是具体的一个对象,看得见摸得着 。
■: 属性就是附着在上面,它一定是某个的属性 。
■: 这是个描述数据库的辅助信息,它是针对 data,block或者整个的描述 。也就是说这块信息不会针对某个具体的来描述,针对的描述叫,针对数据块来描述就是 。
3.1
现实世界的一个对象会对应到一个或者多个 。比如,一条道路就是一个存储于blok里面的link ,一座山的山顶就是Basic mapblock里的point ,一个城市就是在nameblock里面的 area name ,一个旅店就是在poiblock里的 poi。
class
现实世界的对象都会在NDS 对应到一个或者多个实例 。比如,一条道路有名字,有多个连接点,其中道路名表示为name ,这条道路表示成link。
NDS对也定义了些 class(抽象类别),这些 class是不可以被实例化或者具体化,往下细分就是些具体的class,这些class可以被实例化 。(感觉这几话就是废话,就是对做了下归类 。解释起来,看下面这个图,这排就是抽象类别,一个道理相关的对象的总称,往下的links,这几个才是对应到现实世界具体的对象 。理解下概念就行)
想了解各个的具体含义,到各个 block章节里面具体细谈 。
整体结构