一种导航电子地图的差分数据产生方法及装置的制作方法

文档序号:2582846阅读:205来源:国知局
专利名称:一种导航电子地图的差分数据产生方法及装置的制作方法
技术领域
本发明涉及卫星导航领域,特别涉及一种导航电子地图的差分数据产生方法及装置。
背景技术
现实世界中的地理要素存在不断地变化和更新,为了保证地图的准确性和现势性,导航电子地图业界组织了大量的人力物力进行了导航电子地图增量更新方面的研究和实践,然而不管采用什么样的增量更新方案,对于差分数据的抽取都是一个必不可少的环节。目前主流技术对于差分数据的抽取主要依赖于地理要素对象的永久ID(Permanent ID, PID),该地理要素对象的永久ID是在数据生产时添加。图I为现有技术中导航电子地图的差分数据产生方法示意图,参照图1,该技术首先对原始数据进行加工,给数据记录设置静态PID,在更新版本的加工中,根据实地采集的数据,对新增的数据生成新PID,并设置增加标志;对于变更的数据,修改完包括坐标在内的属性后,设置变更标志;对于需要删除的记录,则设置删除标记;最后生成相应的更新对象列表。从以上描述可知,这种方案的特点为如果基准版数据本来有PID,则不需要重新加工,否则需要对基准版数据记录设置静态PID ;需要对更新版数据中的记录设置静态PID ;原始数据和差分数据中需要设置“增加”(ADD)、“变更”(UPD)和“删除”(DEL)标记;基准版数据所有的记录默认都是ADD操作;为方便后续操作,往往需要生成更新对象的PID列表。这种方案的缺点为需要加工原始数据,对原始数据设置静态PID,这就需要变更生产作业流程,增加管理成本;由于需要对原始数据进行加工,提高了生产成本;对于原始积累的成品数据存在着再加工或废弃的可能;对于那些在原始数据中不存在,需要在数据编译时经过一定逻辑运算得到的数据,处理起来比较复杂,必须通过修改编译流程才能为其添加PID,举例如下图2示意了弧段、路链与道路名称的关系,在有些物理存储格式(Physical Storage Format, PSF)如四维图新的NI-PSF中,为了尽可能的减小数据量,在数据编译时需要将满足一定条件(如名称及等级相同的收费道路)的弧段连接成路链对象,同时将道路名称根据客户要求沿着道路按一定间距均匀分布。如图2中假定弧段AB、BC、CD都是南京西路且都是免费的,则在数据编译时会生成路链AD记录。由于原始数据中只有弧段AB、BC、CD数据,而并没有路链AD数据和沿路分布的道路名称数据(名称记录南京西路),同时由于数据加工时只能对弧段数据设置PID,从而导致在进行差分处理路链及路名时,找不到相应的PID,这样就使得差分处理变得很复杂。

发明内容
有鉴于此,本发明的目的是提供一种导航电子地图的差分数据产生方法及装置, 不需依赖数据生产时为记录添加永久ID,就能够实现对导航电子地图的差分数据的抽取。为实现上述目的,本发明提供技术方案如下一种导航电子地图的差分数据产生方法,包括遍历基准版地图文件的所有记录,利用哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第一哈希表中;遍历更新版地图文件的所有记录,利用所述哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第二哈希表中;对所述第一哈希表和第二哈希表进行比较生成差分数据文件,所述差分数据文件中包括需要删除的记录以及需要增加的记录。上述的差分数据产生方法,其中在对所述基准版地图文件和更新版地图文件进行遍历之前还包括通过数据访问接口读入并解析预定模型的所述基准版地图文件和更新版地图文件,并通过数据适配器将所述基准版地图文件和更新版地图文件的每条记录转换为字节序列后存储在连续的存储区域中;在生成所述差分数据文件之后还包括通过所述数据适配器和数据访问接口将所述差分数据文件转换为所述预定模型后存储。上述的差分数据产生方法,其中所述第一哈希表和第二哈希表为链表,所述链表的节点存储记录的指针以及该记录的永久ID。上述的差分数据产生方法,其中所述利用哈希算法生成每条记录的永久ID为分别将两个不同的计算类型参数输入到所述哈希算法中,来为每条记录生成两个不同的永久ID,分别为第一永久ID和第二永久ID ;所述第一哈希表和第二哈希表为链表数组,所述第一永久ID用于标识记录在所述链表数组中所属的链表,所述链表的节点存储记录的指针以及该记录的第二永久ID。上述的差分数据产生方法,其中,所述对所述第一哈希表和第二哈希表进行比较生成差分数据文件,包括对于存在于所述第一哈希表中、但不存在于所述第二哈希表中的永久ID,将该永久ID及对应的记录输出到差分数据文件中,并设置删除标记;对于存在于所述第二哈希表中、但不存在于所述第一哈希表中的永久ID,将该永久ID及对应的记录输出到差分数据文件中,并设置增加标记。一种导航电子地图的差分数据产生装置,包括第一哈希表生成模块,用于遍历基准版地图文件的所有记录,利用哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第一哈希表中;
第二哈希表生成模块,用于遍历更新版地图文件的所有记录,利用所述哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第二哈希表中;差分数据产生模块,用于对所述第一哈希表和第二哈希表进行比较生成差分数据文件,所述差分数据文件中包括需要删除的记录以及需要增加的记录。上述的差分数据产生装置,其中,还包括数据访问模块,用于读入并解析预定模型的所述基准版地图文件和更新版地图文件,将所述基准版地图文件和更新版地图文件的每条记录转换为字节序列后存储在连续的存储区域中,以及,将所述差分数据文件转换为所述预定模型后存储。上述的差分数据产生装置,其中所述第一哈希表和第二哈希表为链表,所述链表的节点存储记录的指针以及该记录的永久ID。上述的差分数据产生装置,其中所述第一哈希表生成模块和第二哈希表生成模块进一步用于分别将两个不同的计算类型参数输入到所述哈希算法中,来为每条记录生成两个不同的永久ID,分别为第一永久ID和第二永久ID ;此时,所述第一哈希表和第二哈希表为链表数组,所述第一永久ID用于标识记录在所述链表数组中所属的链表,所述链表的节点存储记录的指针以及该记录的第二永久 ID。上述的差分数据产生装置,其中,所述差分数据产生模块进一步用于对于存在于所述第一哈希表中、但不存在于所述第二哈希表中的永久ID,将该永久ID及对应的记录输出到差分数据文件中,并设置删除标记;对于存在于所述第二哈希表中、但不存在于所述第一哈希表中的永久ID,将该永久ID及对应的记录输出到差分数据文件中,并设置增加标记。与现有技术相比,本发明的有益效果是本发明利用哈希算法动态计算数据记录的永久ID,使得差分数据的抽取与数据记录是否具有永久ID无关,与数据规格和数据模型也无关,这样,差分数据的抽取不仅不需要额外的生产成本,而且能够充分利用长期积淀的原始导航数据,从而大大缩短了数据的更新周期,提高了竞争力。











具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。参照图3,本发明实施例的导航电子地图的差分数据产生方法,包括如下步骤步骤301 :遍历基准版地图文件的所有记录,利用哈希算法生成每条记录的永久 ID,并将生成的永久ID及对应的记录存储到第一哈希表中;步骤302 :遍历更新版地图文件的所有记录,利用哈希算法生成每条记录的永久 ID,并将生成的永久ID及对应的记录存储到第二哈希表中;为了根据动态生成的永久ID来抽取差分数据,步骤301与步骤302中应当采用相同的哈希算法,这样,在不同版本中的相同记录就具有相同的永久ID。步骤303 :对所述第一哈希表和第二哈希表进行比较生成差分数据文件,所述差分数据文件中包括需要删除的记录以及需要增加的记录。在具体实现时,所述第一哈希表和第二哈希表可以为链表,所述链表的节点存储记录的指针以及该记录的永久ID。所述第一哈希表和第二哈希表也可以为链表数组,此时,步骤301和步骤302中, 利用哈希算法生成每条记录的永久ID为分别将两个不同的计算类型参数输入到所述哈希算法中,来为每条记录生成两个不同的永久ID,分别为第一永久ID和第二永久ID。所述第一永久ID用于标识记录在所述链表数组中所属的链表,所述链表的节点存储记录的指针以及该记录的第二永久ID。当然,所述第一哈希表和第二哈希表也可以采用其他公知的数据结构,这里不作赘述。在步骤303中,差分数据的产生规则为对于存在于所述第一哈希表中、但不存在于所述第二哈希表中的永久ID,将该永久ID及对应的记录输出到差分数据文件中,并设置删除标记;对于存在于所述第二哈希表中、但不存在于所述第一哈希表中的永久ID,将该永久ID及对应的记录输出到差分数据文件中,并设置增加标记。生成差分数据文件后,就可以将所述差分数据文提供给导航端,由所述导航端根据所述差分数据文件和基准版地图文件恢复所述更新版地图文件,具体为将所述差分数据文件中设置有删除标记的记录从所述基准版地图文件中删除,并将所述差分数据文件中设置有增加标记的记录增加到所述基准版地图文件中,从而得到恢复后的更新版地图文件。本发明实施例对步骤301和步骤302的执行顺序不做限制,即,可以先执行步骤 302,再执行步骤301,另外,两者还可以并行执行。进一步,在对所述基准版地图文件和更新版地图文件进行遍历之前还可包括通过数据访问接口读入并解析预定模型的所述基准版地图文件和更新版地图文件,并通过数据适配器将所述基准版地图文件和更新版地图文件的每条记录转换为字节序列后存储在连续的存储区域中;此时,在生成所述差分数据文件之后还包括通过所述数据适配器和数据访问接口将所述差分数据文件转换为所述预定模型后存储。图4为本发明实施例的导航电子地图的差分数据产生方法的具体实现示意图,可以看出,图4与图I相比主要做了以下方面的改进增加了动态PID计算环节,使得差分数据的抽取与原始数据是否具有PID无关;动态计算好的PID存放于哈希表,并通过比较两个版本的哈希表进行差分数据的抽取;增加数据访问层使差分数据的抽取与输入输出数据的规格无关。另外,PID动态计算还存在以下优点可以很方便地处理经过逻辑运算后得到的记录,如路链记录、路名记录等;在保证比较的两个版本的数据模型一致的前提下,可以做到差分数据的抽取与数据模型无关,即,可以对任意模型的数据进行差分抽取。图5为本发明实施例的导航电子地图的差分数据产生方法中的数据流向图。参照图5,数据访问层主要负责输入数据读取、数据模型转换、差分数据输出。数据访问层的存在可以保证PID计算与输入数据规格无关。数据访问层主要由数据访问接口(ACC)和数据适配器(DATA ADAPTER)组成。原始数据通过ACC读入并解析,然后通过DATA ADAPTER进行数据模型转换,最后将转换后的数据供差分数据处理模块(DIFF PROCESS)使用。差分数据处理模块抽出的差分数据经 DATAADAPTER模型转换后,由相应的ACC输出并保存。可见,由于有数据访问层的存在,使得差分数据的抽取可以做到与数据的规格无关,即,输入的两个版本的数据可以同为SQL DB,也可以同为SHAPE,还可以同为PSF。相应地,差分数据将保存为SQL DB,或者,SHAPE,或者,PSF (分别与输入数据一致)。以下给出PID计算的一种具体实现方法。PID计算的核心内容是根据数据记录的属性,通过某种方法生成能够唯一标识该记录的一个整数值,这个整数就是我们需要的PID。下面分别对PID计算过程中使用存储模型、数据结构和计算算法进行描述。A)存储模型PID计算算法使用的存储模型非常简单,它仅是一个能够描述一条记录所有属性的字节序列,该模型如图6所示。在图6中,序列长度是指描述某条记录的字节序列长度, 单位为字节;字节I 字节η是字节序列。该存储模型决定了 DATAADPATER对于输入输出数据的模型转换非常简单,它唯一需要做的事情就是对ACC读入的数据进行简单的长度统计,并将数据拷贝到相应长度的字节序列中就行。另外这种数据模型适合处理所有格式的数据,因为不管哪种格式的数据,经 ACC解析后必定会生产一块连续的或几块不连续的存储区域,若是连续的存储区域,该区域可以直接给后续的哈希算法使用,若是不连续的存储区域,DATAADAPTER只要将这些不连续的存储区域拷贝到一连续的存储区域即可。B)数据结构图7为本发明实施例在PID计算过程中使用的数据结构示意图,该数据结构为链表数组。为了方便描述,定义如下符号L表示链表,L [η]表示链表中第η个节点;0094]LA表示链表数组,LA [η]表示链表数组中第η个元素;
0095]REC {PID, VAL}表示记录,PID表示记录的永久ID,VAL表示记录的内容,REC. PID 表示取记录的PID,REC. VAL表示取记录的内容;
0096]MOD表示对一个整数进行取模运算,例如5M0D 3等于2。
0097]对图7作如下说明
0098]在PID计算过程中使用一个具有2048个元素的链表数组LA ;
0099]链表的每一个节点是一个记录REC {PID-V,VAL};
0100]记录REC{PID-V,VAL}所属的链表可以通过以下公式获得L = LA[PID_0 MOD 2048],PID-O为链表的定位ID ;
0101]通过遍历链表的节点可以取得链表节点内容和记录的PID ;
0102]为了加快链表的遍历速度以及尽可能减少PID冲突,本发明实施例对同一块字节序列用不同的公式(同一哈希算法输入不同的计算类型参数)算出两个不同的PID,分别为 PID-O和PID-V,其中,PID-O用来定位链表,PID-V (校验PID)存储在链表的节点中。
0103]OPID计算算法
0104]PID计算算法主要是将DATA ADAPTER传入的字节序列压缩成一个整数,本发明实施例中采用了比较成熟的暴雪MPQ哈希算法,其算法实现代码如下
0105]unsigned long HashString_Mpq(char*pcString, unsigned long ulHashType, int a_iLen)
0106]{
0107]int iTmpV ;
0108]unsigned char氺pcKey = (unsigned char*)pcString ;
0109]unsigned long ulSeedl = 0x7FED7FED ; unsigned long ulSeed2 = OxEEEEEEEE ; while(a_iLen > 0)
0]
1]
2]
3]
4]
5]
6]
7]
8] 9]
iTmpV =(氺pcKey);
Il根据type不同计算不同的hash值
ulSeedl = ((ulHashType << 8)+iTmpV)' (ulSeedl+ulSeed2); ulSeed2 = iTmpV+ulSeedl+ulSeed2+(ulSeed2 < < 5)+3 ; pcKey++ ; a_iLen—;
}
return ulSeedl ;
}
其中
pcString为传入的字节序列; a_iLen为字节序列长度;
ulHashType为计算类型,主要是用来对同一字节序列进行不同的哈希运算,该值
以下给出本发明实施例的导航电子地图的差分数据产生方法的详细流程。首先介绍差分数据生成规则。现实世界中对于地理要素的变更存在以下几种情况新增,如新建某条高速公路等;变更,如道路改名等;删除,如道路的废止等。这几种情形在本发明抽取差分数据时会按下表的规则生成差分数据
权利要求
1.一种导航电子地图的差分数据产生方法,其特征在于,包括遍历基准版地图文件的所有记录,利用哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第一哈希表中;遍历更新版地图文件的所有记录,利用所述哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第二哈希表中;对所述第一哈希表和第二哈希表进行比较生成差分数据文件,所述差分数据文件中包括需要删除的记录以及需要增加的记录。
2.如权利要求I所述的差分数据产生方法,其特征在于在对所述基准版地图文件和更新版地图文件进行遍历之前还包括通过数据访问接口读入并解析预定模型的所述基准版地图文件和更新版地图文件,并通过数据适配器将所述基准版地图文件和更新版地图文件的每条记录转换为字节序列后存储在连续的存储区域中;在生成所述差分数据文件之后还包括通过所述数据适配器和数据访问接口将所述差分数据文件转换为所述预定模型后存储。
3.如权利要求I所述的差分数据产生方法,其特征在于所述第一哈希表和第二哈希表为链表,所述链表的节点存储记录的指针以及该记录的永久ID0
4.如权利要求I所述的差分数据产生方法,其特征在于所述利用哈希算法生成每条记录的永久ID为分别将两个不同的计算类型参数输入到所述哈希算法中,来为每条记录生成两个不同的永久ID,分别为第一永久ID和第二永久 ID ;所述第一哈希表和第二哈希表为链表数组,所述第一永久ID用于标识记录在所述链表数组中所属的链表,所述链表的节点存储记录的指针以及该记录的第二永久ID。
5.如权利要求I所述的差分数据产生方法,其特征在于,所述对所述第一哈希表和第二哈希表进行比较生成差分数据文件,包括对于存在于所述第一哈希表中、但不存在于所述第二哈希表中的永久ID,将该永久ID 及对应的记录输出到差分数据文件中,并设置删除标记;对于存在于所述第二哈希表中、但不存在于所述第一哈希表中的永久ID,将该永久ID 及对应的记录输出到差分数据文件中,并设置增加标记。
6.一种导航电子地图的差分数据产生装置,其特征在于,包括第一哈希表生成模块,用于遍历基准版地图文件的所有记录,利用哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第一哈希表中;第二哈希表生成模块,用于遍历更新版地图文件的所有记录,利用所述哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第二哈希表中;差分数据产生模块,用于对所述第一哈希表和第二哈希表进行比较生成差分数据文件,所述差分数据文件中包括需要删除的记录以及需要增加的记录。
7.如权利要求6所述的差分数据产生装置,其特征在于,还包括数据访问模块,用于读入并解析预定模型的所述基准版地图文件和更新版地图文件, 将所述基准版地图文件和更新版地图文件的每条记录转换为字节序列后存储在连续的存储区域中,以及,将所述差分数据文件转换为所述预定模型后存储。
8.如权利要求6所述的差分数据产生装置,其特征在于所述第一哈希表和第二哈希表为链表,所述链表的节点存储记录的指针以及该记录的永久ID0
9.如权利要求6所述的差分数据产生装置,其特征在于所述第一哈希表生成模块和第二哈希表生成模块进一步用于分别将两个不同的计算类型参数输入到所述哈希算法中,来为每条记录生成两个不同的永久ID,分别为第一永久 ID和第二永久ID ;此时,所述第一哈希表和第二哈希表为链表数组,所述第一永久ID用于标识记录在所述链表数组中所属的链表,所述链表的节点存储记录的指针以及该记录的第二永久ID。
10.如权利要求6所述的差分数据产生装置,其特征在于,所述差分数据产生模块进一步用于对于存在于所述第一哈希表中、但不存在于所述第二哈希表中的永久ID,将该永久ID 及对应的记录输出到差分数据文件中,并设置删除标记;对于存在于所述第二哈希表中、但不存在于所述第一哈希表中的永久ID,将该永久ID 及对应的记录输出到差分数据文件中,并设置增加标记。
全文摘要
本发明提供一种导航电子地图的差分数据产生方法及装置,方法包括遍历基准版地图文件的所有记录,利用哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第一哈希表中;遍历更新版地图文件的所有记录,利用所述哈希算法生成每条记录的永久ID,并将生成的永久ID及对应的记录存储到第二哈希表中;对所述第一哈希表和第二哈希表进行比较生成差分数据文件,所述差分数据文件中包括需要删除的记录以及需要增加的记录。本发明不需依赖数据生产时为记录添加永久ID,就能够实现对导航电子地图的差分数据的抽取。
文档编号G09B29/10GK102607576SQ201110027060
公开日2012年7月25日 申请日期2011年1月25日 优先权日2011年1月25日
发明者王乐乐, 高剑 申请人:北京四维图新科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1