基于多级切片方式的矢量地图数据传输方法

文档序号:7928507阅读:177来源:国知局
专利名称:基于多级切片方式的矢量地图数据传输方法
技术领域
本发明主要涉及到地理信息系统领域,特指一种基于多级切片方式的矢量地图数据传输 方法。
背景技术
随着无线通信技术的快速发展,位置服务(Location-based Service, LBS)有望成为杀手 级应用。LBS应用系统由服务器、移动终端和连接两者的无线通信网络组成。移动终端存在 屏幕小、电源持续供电时间短、存储资源偏少、CPU计算能力低等特性。无线通信网络存在 信道不稳定,带宽偏低等问题。
LBS应用系统中在线传输地图数据能够向用户提供实时的、满足个性需求的、内容丰富 的信息,而且移动终端本地没有预存的地图集,不需要用户更新维护。然而,在线传输地图 数据面临以下问题。第一,无线通信比较耗电,而移动终端的电源持续供电时间短。第二, 地图数据量大,而无线网络有时信道不稳定、带宽偏低。
相比于栅格地图,矢量地图的数据量更少。矢量地图是地图要素组成的集合。在线传输 以地图要素作为基本单元,存在以下问题第一,每次移动终端一侧进入新的目标区域,必 须向服务器发送数据请求。即使本地缓存备有新目标区域的全部数据,由于无法判断这一点, 所以需要重新获取数据。这增加了不必要的连接次数和通信量。第二,送到移动终端的要素 包含了全部的细节,而在小比例尺地图上部分细节不被使用。这增加了数据通信量。第三, 把不需要的细节从要素的数据体内剥离出来,需要执行大计算量的地图自动综合操作。

发明内容
本发明要解决的技术问题就在于针对现有技术存在的技术问题,提供一种能够大大提 高矢量地图数据的传输效率、提高移动终端一侧缓存和重用数据的能力、从而减少移动终端 与服务器之间数据通信量的基于多级切片方式的矢量地图数据传输方法。
为解决上述技术问题,本发明提出的解决方案为 一种基于多级切片方式的矢量地图数 据传输方法,其特征在于首先对矢量地图数据进行多级切片,从服务器端到移动终端的地 图数据传输以多级切片作为基本单元,移动终端接收到多级切片后的矢量地图后将切片拼接 成完整地图。
多级切片的生成和拼接步骤为
A.多级切片的生成
(1)切片将全幅地图纵横切割等分成4块,得到第1级切片;接着把每一个1级多级切片又等分成4块,得到第2级切片,即共42=16块......,依次类推,直至生成第m级切片,
对于每一次切分,被切者称为父切片,所得到的4块切片称为子切片;
(2) 分级将地图比例尺按照大小依次划分成n个级别,其中1级至n级比例尺依次变 小,将地图要素按权重大小依次分成n个级别,其中n级要素是出现在n级比例尺地图中却 没有出现在n-l级比例尺地图中的要素,为比例尺级别和多级切片级别之间建立对应关系, 把与某级切片相交的某级要素归为一组,称这一分组为L级切片,并称这组要素属于该切片; 同时,定义某级切片的兄长切片,S级兄长切片指的是与L级切片对应区域相交的S级要素 组成的集合,其中S-1,2,…,L-1; S级父切片指的是L级切片的级别等于S的祖先切片或父 切片,S级兄长切片是S级父切片的一部分;
(3) 增量要素的增量是在两个比例尺级别之间,同一要素的细节数据的差值,当增量
相比于要素的数据总量超过设定的比例下限时,设置增量; B.由多级切片合成完整地图的步骤
(1) 多级切片检索合成L级比例尺下区域A的地图所要用到的是与区域A相交的L级 切片组成的集合,记为QSet;
(2) 数据集成对于QSet内的每一个L级切片,数据集成是沿着切片的兄长关系向上追 溯,除了各级切片所属的要素的汇总,这一过程还包括同一要素的增量的合并;
(3) 切片拼接上一歩得到了每一个与目标区域A相交的L级切片的数据汇总,接下来 就是把这些L级切片的数据汇总依据空间邻近关系拼接,最终得到完整的地图。
地图数据传输过程为
1) 计算得出所有与区域A相交的L级切片,下面把这一集合记为QSet;
2) 对于QSet中的每一个L级切片Q,执行以下步骤
A. 地图应用执行"缓存检索操作",检索切片Q是否在本地缓存;如果切片Q已在本地, 转步骤F;否则,执行"提取己有要素记录操作",得到切片Q的"终端已有要素记录";
B. 地图应用向服务器请求切片Q的数据,请求信息包含切片的编号QID和终端已有要 素记录
C. 服务器收到请求后,首先根据编号QID推算出多级切片的区域和级别L,接着地图数 据服务部件检索地图数据库得到多级切片及其兄长切片,然后据终端已有要素记录,在检索 到的切片中执行"去除终端已有要素操作",最后把多级切片及其兄长切片发送给移动终端;
D. 地图应用接收数据,也就是多级切片及其兄长切片的集合;
E. 执行"多级切片插入操作"把多级切片Q及其兄长切片存入本地缓存;
F. 执行"数据集成操作",生成切片Q的完整地图数据集;3)把QSet中的所有L级切片按空间关系拼接在一起,得到L级比例尺下区域A的完整地图。
所述移动终端一侧的本地缓存由地图要素集、要素散列表和多级切片索引表组成;所述 地图要素集由缓存中的各个要素组成,每一个要素在要素散列表拥有一表项,其内包含三个 域,即要素ID,引用计数,指向要素存储位置的指针,引用计数记录引用该要素的多级切片 的数目;所述要素散列表按照要素ID进行散列排序,每一个在本地的多级切片Q在多级切 片索引表树拥有一个表项,其内包含(a)多级切片编号;(b)兄长链首指针,指向兄长切片 链表;(c)指向要素引用表的指针;(d)最近使用标记;所述多级切片索引表内,各表项按多 级切片编号依次排序。
与现有技术相比,本发明的优点就在于
1、 使用过程中,移动终端一侧能高比例地重用缓存在移动终端本地的地图数据,因而有 效减少地图数据传输的通信量。第一,地图发生平移时,持续出现在屏幕内的区域(由切片 组成)的数据将被重用。第二,縮小地图时,前面出现的大比例尺地图所使用的数据的一部 分将被后面出现的小比例尺地图重用。数据重用比例最高可达1/4。第三,放大地图时,前面 出现的小比例尺地图的部分数据将被后面出现的大比例尺地图重用。后者甚至只需要向服务 器请求L+1级比例尺下目标区域的地图数据,1 L级比例尺的数据己缓存在本地。
2、 地图要素按正方形的区块(即切片)分组,但没有把要素硬性切割成多个部分。传输 方法不会重复传输与多个区块同时相交的要素,有利于减少地图数据传输的通信量。
3、 把多级切片用作缓存单元有利于减少移动终端和服务器之间的通信连接次数与数据通 信量。理由有二。第一,每当进入新的区域(假定为L级比例尺下区域A)时,通过判别本 地缓存中的L级切片拼接在一起是否能够覆盖区域A,它能够得出需要的全部数据是否巳在 本地缓存中这一结论。如果恰好被覆盖,则不需要连接服务器更新数据。第二,可以只把要 素的部分细节而不是全部细节传输到移动终端一侧;
4、 多级切片提高了移动终端一侧重用地图数据的机会,有利于减少数据通信量。。基于 多级切片对地图要素进行分组,不仅维持了空间上的邻近关系,而且兼顾了权重。在地图显 示中,同样权重的要素要么一起出现,要么都不出现。这样,多级切片一起使用的概率最高, 高于仅仅依据空间邻近关系生成的分组;
5、 本发明的方法能有效减少地图数据传输规模和移动终端一侧的地图处理计算规模,这 种方法与传统方法有着明显不同,其每个切片包含的数据内容更加准确、丰富; 一方面数据 类型不同,本发明的多级切片是所针对的是矢量型地图数据,另一方面,多级切片包含的是 同一权重的要素。


图1是本发明对矢量地图数据进行多级切分的示意图。 图2是本发明地图数据传输过程的流程示意图; 图3-1足本发明中移动终端本地缓存的整体结构示意图; 图3-2是本发明中多级切片索引表项的结构不意图; 图3-3是本发明中要素散列表项的结构示意图; 图4-1是木发明中多级切片插入操作的流程示意图; 图4-2是作为核心步骤的切片要素入库操作流程示意图; 图4-3是兄长切片要素入库的流程示意图; 图5是本发明中提取已有要素记录操作的流程示意图; 图6是应用本发明方法的系统构成示意图。
具体实施例方式
以下将结合附图和具体实例对本发明做进一步详细说明。
(1)从服务器端到移动终端的地图数据传输以多级切片作为基本单元。多级切片有两方 面含义, 一方面是地图中的一块正方形区域,另一方面是与该区域相交的、权重相同的地图 要素/增量组成的集合。多级切片的生成步骤如下
1) 切片。首先把全幅地图纵横切割等分成4块,得到第l级切片;接着把每一个l级多
级切片又等分成4块,得到第2级切片(一共42=16块);......,依次类推,直至生成第m
级切片。对于每一次切分,被切者称为父切片,所得到的4块切片称为子切片。
多级切片采用以下方法进行编号。首先,4块1级切片沿着左上、右上、右下、左下的 顺序依次编号为1, 2, 3, 4;接着,每一个1级切片等分而成的2级切片沿着同样的顺序编号 为1,2,3,4;,其父切片的编号后跟本级的编号即得2级切片的编号;......,依次类推,可得
出其余各级切片的编号,如图1所示。
2) 分级。首先,把地图比例尺划分成n个级别(其中,1级比例尺最高,2级次之,......,
n级最低)。相应地,地图要素按权重大小也分成n个级别。1级要素是出现于1级比例尺地 图中的要素。2级要素是出现在2级比例尺地图中却没有出现在1级比例尺地图中的要 素,......,n级要素是出现在n级比例尺地图中却没有出现在n-l级比例尺地图中的要素。接
着,为比例尺级别和多级切片级别之间建立对应关系。实际应用中,必有m^n,也就是说1 级比例尺地图上有4^nw个m-n+l级切片。为叙述方便,文中假定111=11,这不影响方案的基 本原理叙述。这样,1级比例尺与1级切片对应,2级比例尺与2级切片对应,......,n级比
例尺与n级切片对应。最后,把与L级切片相交的L级要素归为一组,称这一分组为L级切片,并称这组要素属于该切片。文中也把L级切片所属要素的数据集合称作L级切片。
另夕卜,定义L级切片的兄长切片。S级(S=l,2, ...,L-l)兄长切片指的是与L级切片对 应区域相交的S级要素组成的集合。S级父切片指的是L级切片的级别等于S的祖先切片或 父切片。S级兄长切片是S级父切片的一部分。S级兄长切片的编号由L级切片的编号加上 级别S组成。
3)增量。地图显示中,大型要素在高级别比例尺中显示的细节少,在低级别比例尺中显 示的细节多。要素的增量是在两个比例尺级别L, K之间,同一要素的细节数据的差值。要 素的L级权重的增量(称之为L级增量)是相对于在L-l级比例尺下显示该要素所使用的全 部数据的增量。无论是否使用增量,在L-1级比例尺下该要素的显示效果不产生可察觉区别。 只有当增量相比于要素的数据总量超过设定的比例下限V时,才设置增量。这是为了保证增 量带来的好处大于由此在计算上造成的损耗。要素增量既包括所增加的细节数据(一些坐标 点),也包括坐标点插入的位置。L级切片的增量由与该切片相交的、权重级别更高的要素的 L级增量组成。
(2) 地图数据传输过程。移动终端上的地图应用需要L级比例尺下区域A的地图数据集 R (A,L)时,通过以下步骤获得数据(见图2):
1) 计算得出所有与区域A相交的L级切片,下面把这一集合记为QSet。
2) 对于QSet中的每一个L级切片Q,执行以下步骤
A. 地图应用执行"缓存检索操作",检索切片Q是否在本地缓存。如果切片Q已在本地, 转步骤F;否则,执行"提取已有要素记录操作",得到切片Q的"终端已有要素记录"。
B. 地图应用向服务器请求切片Q的数据,请求信息包含切片的编号QID和终端已有要素记录。
C. 服务器收到请求后,首先根据编号QID推算出多级切片的区域和级别L,接着地图数 据服务部件检索地图数据库得到多级切片及其兄长切片,然后据终端已有要素记录,在检索 到的切片中执行"去除终端已有要素操作",最后把多级切片及其兄长切片发送给移动终端。
D. 地图应用接收数据,也就是多级切片及其兄长切片的集合。
E. 执行"多级切片插入操作"把多级切片Q及其兄长切片存入本地缓存。
F. 执行"数据集成操作",生成切片Q的完整地图数据集。
3) 把QSet中的所有L级切片按空间关系拼接在一起,得到L级比例尺下区域A的完整地图。
(3) 缓存的结构。移动终端一侧的本地缓存由地图要素集、要素散列表和多级切片索引 表组成,见图3-1、图3-2、图3-3。地图要素集由缓存中的各个要素组成。每一个要素在要素散列表拥有一表项,其数据结构定义如下 struct featureHashEntry { long featureID; char refCount; void* featurePtr;
其巾,featureID是要素ID, refCount是要素的引用计数,featurePtr是指向要素存储位置 的指针。引用计数记录引用该要素的多级切片的数目。散列表按照要素ID进行散列排序。
每一个在本地的多级切片Q (不含兄长切片)在多级切片索引表拥有一个表项,其数据 结构定义如下
struct TilelndexEntry { long tileID;
void* brotherListHead; void* featureRefListPtr; char used;
其中,tikID是多级切片编号;brotherListHead域存放兄长链首指针,用来指向兄长切片 链表;featureRefListPtr域存放指向要素引用表的指针;used域是最近使用标记。最近使用标 记的用法是每一次被使用,则增l;每隔一定周期T,清为0。需要淘汰切片时,used域值 为0的切片成为候选。
假定切片Q的级别为L,则兄长切片链表一共有L-1个结点,从头到尾依次对应1,2,..., L-l级兄长切片。每一个结点包含要素引用表。要素引用表由指向要素散列表项的指针组成。 这些表项指向的要素是L级切片Q或兄长切片所属的要素。
多级切片索引表内,各表项按多级切片编号依次排序。输入多级切片的编号,检索排序 表能快速判别多级切片是否已在本地,而利用要素引用表和兄长切片链表能立即取得该多级 切片及其兄长切片所属的要素的数据。
(4)缓存检索操作。输入切片的编号QNo,检索切片的步骤是
1) 在多级切片索引表内采用折半查找法査找编号QNo。如果没有找到,则返回不存在该 切片的结论,检索结束。
2) 从查找到的表项内取得要素引用表和兄长切片链首指针。由前者可得到切片所属的要 素(含增量)。由后者可得到各兄长切片所属的要素。
3) 对切片及其兄长切片执行"数据集成操作"即可得到L级切片的完整地图数据。
9(5)多级切片插入操作。每一次接收到多级切片(及其兄长切片)后,执行插入操作。 多级切片和兄长切片可根据各自编号进行识别。插入操作步骤如下(见图4-1、图4-2、图4-3):
1) 在多级切片索引表中按序插入一表项QEntry。
2) 分配要素引用表,由QEntry的要素引用表指针指向它。
3) 执行切片的要素入库操作。步骤包括
A. 分配要素引用表,表项数目与切片的要素数目相等。
B. 对于切片的每一个要素,
如果要素内容只包含要素ID (意味着要素数据已在缓存内),则执行以下步骤
a) 以要素ID作为输入,在要素散列表内检索要素散列表项。
b) 散列表项内的引用计数增l。
c) 用要素引用表项指向要素散列表项。
否则(要素内容包含完整的要素数据),执行以下步骤
a) 把要素存入地图数据缓存。
b) 申请一个要素散列表项,并用该表项指向要素的存储位置。
c) 散列表项的引用计数置为1。
d) 用要素引用表项指向要素散列表项。
4) 对于兄长切片,沿级别从高到低的次序,执行以下步骤
A. 分配兄长结点,内含要素引用表。
B. 执行切片的要素入库操作,过程同步骤3所述。
C. 把兄长结点加入兄长链表的尾部。
6)缓存的淘汰操作。缓存釆用LRU策略淘汰多级切片。多级切片索引表项的最近使用 标记这一个域用来记录最近使用过的多级切片。经过周期时间T后,未被标记为最近使用过 的多级切片将被淘汰。淘汰对于L级切片Q的步骤如下
1) 对于切片Q的要素引用表的每一个表项,把它指向的要素散列表项内的引用计数减1。 如果减到0,则释放散列表项和其指向的要素存储空间。释放要素引用表。
2) 对于兄长链表的每一个结点,执行与步骤1相同的动作。
3) 在多级切片索引表内删除切片Q对应的表项。
(7)提取已有要素记录操作。移动终端向服务器请求切片Q的数据时,将执行"提取已有 要素记录操作",得出在本地可供重用的要素,服务器据此不再传输这些要素的数据。提取已 有要素记录操作歩骤如下(见图5):
1)在本地缓存内检索切片Q的祖先切片。检索从L-1级开始,逐级向上直至遇到祖先切片(级别记为Smin)或检索完毕(令Smi,O)。
2) 在本地缓存内检索切片Q的四个子切片,得出已在本地的集合LocalChildSet。
3) 在本地缓存内检索与多级切片Q相邻的L级切片(一共8块),得出己在本地的集合 LocalNebSet。
4) 生成终端已有数据记录的内容,包括已有父切片的级别Smin、已在终端的子切片的编 号和巳在终端的相邻切片的编号。
(8) 去除终端己有要素操作。服务器向移动终端返回切片Q的数据前,根据终端已有要 素记录去除终端已有要素。去除的实际动作是留下要素ID,丢弃其他部分。去除终端已有要 素操作步骤如下
1) 根据己有父切片级别Smin,去除切片Q的1 Smin级兄长切片所属的要素。
2) 根据已在终端的子切片的编号,对于切片Q及其兄长切片,其内要素与已在本地子切 片相交的话,该要素被去除。
3) 根据已在终端的相邻切片的编号,去除同时与切片Q和相邻切片相交的要素。
(9) 数据集成操作。对于QSet内的每一个L级切片Q,数据集成是既有要素的汇总又有 增量的合并。具体步骤如下
1) 把切片Q加入到链表TList中。令G =切片Q。
2) 如果切片G不是1级,则把G的兄长切片加入到切片链表TList的头部。
3) 令G-G的上级切片,转步骤2,直至G的级别到达1级。
4) 从头到尾遍历切片链表TList,对于每一个切片,把其所属的要素汇总到集成结果中, 把所属的增量合并到相应的要素中。
(10) 传输多级切片的系统。应用本发明的系统由服务器和移动终端组成,两者之间通过 通信网络连接在一起,如图6所示。服务器的构成成分有地图数据服务部件和矢量地图数据 库。它的主要功能之一是向移动终端发送多级切片(含兄长切片)。多级切片可以预先存储在 数据库内也可以动态生成。
移动终端一侧包含地图应用、缓存管理器和多级切片缓存集。缓存管理器管理和维护多 级切片缓存集,供地图应用检索和读取多级切片。所有接收自服务器的多级切片都将存入多 级切片缓存集。
移动终端每次发起针对多级切片的地图数据请求,将附带终端己有要素记录表。服务器 收到请求后,地图数据服务部件检索地图数据库,得到所要求的切片及其兄长切片,而后根 据终端已有要素记录表去除己在终端的要素,最后把这些切片发送给移动终端。
权利要求
1、一种基于多级切片方式的矢量地图数据传输方法,其特征在于首先对矢量地图数据进行多级切片,从服务器端到移动终端的地图数据传输以多级切片作为基本单元,移动终端接收到多级切片后,先集成切片及其祖先切片的各级别要素,接着将切片拼接成目标区域的完整地图。
2、 根据权利要求1所述的基于多级切片方式的矢量地图数据传输方法,其特征在于多级 切片的生成和拼接步骤为-A. 多级切片的生成(1) 切片将全幅地图纵横切割等分成4块,得到第1级切片;接着把每一个1级多级切片又等分成4块,得到第2级切片,即共42=16块......,依次类推,直至生成第m级切片,对于每一次切分,被切者称为父切片,所得到的4块切片称为子切片;(2) 分级将地图比例尺按照大小依次划分成n个级别,其中1级至n级比例尺依次变 小,将地图要素按权重大小依次分成n个级别,其中n级要素是出现在n级比例尺地图中却 没有出现在n-l级比例尺地图中的要素,为比例尺级别和多级切片级别之间建立对应关系, 把与某级切片相交的某级要素归为一组,称这一分组为L级切片,并称这组要素属于该切片; 同时,定义某级切片的兄长切片,S级兄长切片指的是与L级切片对应区域相交的S级要素 组成的集合,其中S-1,2,.,.,L-1; S级父切片指的是L级切片的级别等于S的祖先切片或父 切片,S级兄长切片是S级父切片的一部分;(3) 增量要素的增量是在两个比例尺级别之间,同一要素的细节数据的差值,当增量 相比于要素的数据总量超过设定的比例下限时,设置增量;B. 由多级切片合成完整地图的步骤-.(1) 多级切片检索合成L级比例尺下区域A的地图所要用到的是与区域A相交的L级 切片组成的集合,记为QSet;(2) 数据集成对于QSet内的每一个L级切片,数据集成是沿着切片的兄长关系向上追 溯,除了各级切片所属的要素的汇总,这一过程还包括同一要素的增量的合并;(3) 切片拼接上一步得到了每一个与目标区域A相交的L级切片的数据汇总,接下来 就是把这些L级切片的数据汇总依据空间邻近关系拼接,最终得到完整的地图。
3、 根据权利要求2所述的基于多级切片方式的矢量地图数据传输方法,其特征在于地图 数据传输过程为1) 计算得出所有与区域A相交的L级切片,下面把这一集合记为QSet;2) 对于QSet中的每一个L级切片Q,执行以下步骤A.地图应用执行"缓存检索操作",检索切片Q是否在本地缓存;如果切片Q已在本地,转步骤F;否则,执行"提取已有要素记录操作",得到切片Q的"终端已有要素记录";B. 地图应用向服务器请求切片Q的数据,请求信息包含切片的编号QID和终端已有要素 记录;C. 服务器收到请求后,首先根据编号QID推算出多级切片的区域和级别L,接着地图数 据服务部件检索地图数据库得到多级切片及其兄长切片,然后据终端已有要素记录,在检索 到的切片中执行"去除终端已有要素操作",最后把多级切片及其兄长切片发送给移动终端;D. 地图应用接收数据,也就是多级切片及其兄长切片的集合;E. 执行"多级切片插入操作"把多级切片Q及其兄长切片存入本地缓存;F. 执行"数据集成操作",生成切片Q的完整地图数据集;3)把QSet中的所有L级切片按空间关系拼接在一起,得到L级比例尺下区域A的完整 地图。
4、据权利要求1或2或3所述的基于多级切片方式的矢量地图数据传输方法,其特征在 于所述移动终端一侧的本地缓存由地图要素集、要素散列表和多级切片索引表组成;所述 地图要素集由缓存中的各个要素组成,每一个要素在要素散列表拥有一表项,其内包含三个 域,即要素ID,引用计数,指向要素存储位置的指针,引用计数记录引用该要素的多级切片 的数目所述要素散列表按照要素ID进行散列排序,每一个在本地的多级切片Q在多级切 片索引表树拥有一个表项,其内包含(a)多级切片编号;(b)兄长链首指针,指向兄长切片 链表;(c)指向要素引用表的指针;(d)最近使用标记;所述多级切片索引表内,各表项按多 级切片编号依次排序。
全文摘要
本发明公开了一种基于多级切片方式的矢量地图数据传输方法,其步骤为(1)对地图进行L(L=1,2,...,m)级4等分,得到L级正方形区域,接着把与该正方形区域相交的、权重级别为L或配对级别的要素归入称之为“多级切片”的数据集。(2)从服务器端到移动终端的地图数据传输以多级切片作为基本单元。(3)移动终端接收到多级切片后,先集成切片及其祖先切片的各级别要素,接着将切片拼接成移动终端目标区域的完整地图。(4)移动终端一侧缓存多级切片。每次更新首先从本地缓存检索多级切片,若不在本地则向服务器索取。本发明的优点在于移动终端一侧能高比例地重用缓存在本地的地图数据,因而有效减少地图数据传输的通信量。
文档编号H04W4/18GK101459901SQ200810237488
公开日2009年6月17日 申请日期2008年12月30日 优先权日2008年12月30日
发明者叶常春, 周兴铭, 明 徐, 王晓东, 罗金平 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1