发明内容
有鉴于此,本发明提供一种能够解决导航数据增量更新过程中数据冲突的方法,保证更新后整个数据的逻辑关系不会遭到破坏的完备包更新方法。
一种用于解决导航数据中数据冲突的完备包更新方法,所述用于解决导航数据中数据冲突的完备包更新方法包括以下步骤:
S1、重新获取预设定的更新区域的导航数据,将新获取导航数据与已有导航数据进行比较,并将新获取导航数据中的区别数据按照MESH存储存放在集合A中;
S2、依次取出集合A中任意一个MESH数据,定义为集合B,同时将挪入集合B中的MESH数据自集合A中删除;
S3、判断集合A的MESH数据中是否存在与集合B的MESH数据接续的边界LINK,如果存在,则将该LINK所在的MESH中的全部LINK存放于B中,并将它们从A中删除,直至集合B中MESH数据的每一条LINK均判断完毕,将集合B加载为一个完备包;
S4、判断集合A中是否每一个MESH数据均挪入集合B中判断完毕,如果判断完毕,则根据集合B加载得到的完备包,对预设定的更新区域相对应的完备包进行更新。
一种用于解决导航数据增量更新过程中数据冲突的完备包***,所述用于解决导航数据增量更新过程中数据冲突的完备包***包括以下功能模块:
数据获取模块、用于重新获取预设定的更新区域的导航数据,将新获取导航数据与已有导航数据进行比较,并将新获取导航数据中的区别数据按照MESH存储存放在集合A中;
单独获取模块、用于依次取出集合A中任意一个MESH数据,定义为集合B,同时将挪入集合B中的MESH数据自集合A中删除;
相关性判断模块、用于判断集合A的MESH数据中是否存在与集合B的MESH数据接续的边界LINK,如果存在,则将该LINK所在的MESH中的全部LINK存放于B中,并将它们从A中删除,直至集合B中MESH数据的每一条LINK均判断完毕,将集合B加载为一个完备包;
完备包更新模块、用于判断集合A中是否每一个MESH数据均挪入集合B中判断完毕,如果判断完毕,则根据集合B加载得到的完备包,对预设定的更新区域相对应的完备包进行更新。
本发明所述用于解决导航数据中数据冲突的完备包更新方法及其***,以新旧版本之间的区别数据为基础,通过分析区别数据之间的连接关系,将有关联MESH作为一个完备包,从而保证更新后整个数据的逻辑关系不会遭到破坏。现较现有技术,减少了更新的数据量,节约了更新的成本、时间,解决了数据冲突,维护了数据完整性,有利于用户体验。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提供一种用于解决导航数据中数据冲突的完备包更新方法,所述用于解决导航数据中数据冲突的完备包更新方法包括以下步骤:
S1、重新获取预设定的更新区域的导航数据,将新获取导航数据与已有导航数据进行比较,并将新获取导航数据中的区别数据按照MESH存储存放在集合A中;
S2、依次取出集合A中任意一个MESH数据,定义为集合B,同时将挪入集合B中的MESH数据自集合A中删除;
S3、判断集合A的MESH数据中是否存在与集合B的MESH数据接续的边界LINK,如果存在,则将该LINK所在的MESH中的全部LINK存放于B中,并将它们从A中删除,直至集合B中MESH数据的每一条LINK均判断完毕,将集合B加载为一个完备包;
S4、判断集合A中是否每一个MESH数据均挪入集合B中判断完毕,如果判断完毕,则根据集合B加载得到的完备包,对预设定的更新区域相对应的完备包进行更新。
其中,如图2所示,所述步骤S1包括以下分步骤;
S11、设置一更新区域,重新获取该更新区域的导航数据;
S12、将新获取导航数据与已有导航数据进行比较,并将新获取导航数据中的区别数据存放在集合A中;
S13、将集合A中的区别数据以MESH为单位区域进行组织。
S14、在MESH为单位区域的基础上,将集合A的区别数据按照NODE的接续关系进行组织。
其中,如图3所示,所述步骤S2包括以下分步骤;
S31、自集合B的MESH数据中任意取出一条LINK,记作LINKA,判断LINKA是否为边界LINK;
S32、如果是,则在集合A中查找与LINKA存在接续关系的LINK,如果存在,则将集合A中与LINKA存在接续关系的边界LINK记作LINKB,将LINKB所在的MESH数据记为MESHB,并将LINKB所在的MESHB数据全部存入到集合B中,同时将MESHB数据自集合A中删除;
S33、如果不是,则继续选择另一条LINK,直至集合B的MESH数据中所有的LINK均判断完毕;
S34、将集合B中所有数据加载为一个完备包,清空集合B,并接收下一个集合A中的MESH数据。
其中,如图4所示,所述步骤S31包括以下分步骤;
S311、判断LINKA包含的两个NODE是否落入不同MESH区域内,如果是,则判断LINKA为边界LINK;
S312、如果不是,则进一步判断LINKA的其中一个NODE是否落在边界线上,如果是,则判断LINKA为边界LINK;
S313、如果不是,则判断LINKA为非边界LINK。
所述集合B中能够包含一个或多个MESH数据。
具体的,如图5所示,集合A包括MESHA,MESHB,MESHC,MESHD,MESHE,MESHF,MESHG,MESHH,MESHI9个MESH;
根据图6所示的本发明所述用于解决导航数据中数据冲突的完备包更新方法的步骤流程框图可知,自集合A中取出一个未经处理的数据MESHA放入到集合B中,将数据MESHA从集合A中删除,此时集合A中只剩下MESHB,MESHC,MESHD,MESHE,MESHF,MESHG,MESHH,MESHI8个MESH;
从集合B的数据MESHA中取出一条LINK,记作LINKA,如图5中将LINKLb作为LINKA;
如图5中所示,在集合A中查找到LINKLb的接续LINKLc,将LINKLc记作LINKB,将LINKLc所在的MESHB中的全部数据加入到集合B中,并从集合A中删除MESHB中的全部数据,此时集合A中包含的MESH变为MESHC,MESHD,MESHE,MESHF,MESHG,MESHH,MESHI7个MESH,而集合B中包含MESHA和MESHB两个MESH。
依次处理集合B中的所有LINK,待集合B中所有的LINK处理完毕后,集合B中包含的MESH为MESHA,MESHB,MESHC,MESHD,MESHH,而集合A中包含的MESH为MESHE,MESHF,MESHG,MESHI。
将集合B中所有数据作为一个完备包,清空集合B,图5中本次集合B的完备包包含MESHA,MESHB,MESHC,MESHD,MESHH。
判断集合A中是否每一个MESH数据均挪入集合B中判断完毕,如图5中,当集合A中每一个MESH数据均判断完毕,集合B加载得到4个完备包,完备包1:MESHA,MESHB,MESHC,MESHD,MESHH。完备包2:MESHE。完备包3:MESHF,MESHG。完备包4:MESHI。
根据集合B加载得到的完备包,对预设定的更新区域相对应的完备包进行更新。如图5所示中如果需要更新MESHE,MESHF两块区域,则需要更新完备包2和完备包3,即MESHE,MESHF,MESHG。
本发明还提供一种用于解决导航数据增量更新过程中数据冲突的完备包***,如图7所示,所述用于解决导航数据增量更新过程中数据冲突的完备包***包括以下功能模块:
数据获取模块、用于重新获取预设定的更新区域的导航数据,将新获取导航数据与已有导航数据进行比较,并将新获取导航数据中的区别数据按照MESH存储存放在集合A中;
单独获取模块、用于依次取出集合A中任意一个MESH数据,定义为集合B,同时将挪入集合B中的MESH数据自集合A中删除;
相关性判断模块、用于判断集合A的MESH数据中是否存在与集合B的MESH数据接续的边界LINK,如果存在,则将该LINK所在的MESH中的全部LINK存放于B中,并将它们从A中删除,直至集合B中MESH数据的每一条LINK均判断完毕,将集合B加载为一个完备包;
完备包更新模块、用于判断集合A中是否每一个MESH数据均挪入集合B中判断完毕,如果判断完毕,则根据集合B加载得到的完备包,对预设定的更新区域相对应的完备包进行更新。
其中,如图8所示,所述数据获取模块包括以下功能单元;
区域数据获取单元、用于设置一更新区域,重新获取该更新区域的导航数据;
区别数据整合单元、用于将新获取导航数据与已有导航数据进行比较,并将新获取导航数据中的区别数据存放在集合A中;
MESH数据组织单元、用于将集合A中的区别数据以MESH为单位区域进行组织;
NODE数据组织单元、用于在MESH为单位区域的基础上,将集合A的区别数据按照NODE的接续关系进行组织。
其中,如图9所示,所述相关性判断模块包括以下功能单元;
边界LINK判断单元、用于自集合B的MESH数据中任意取出一条LINK,记作LINKA,判断LINKA是否为边界LINK;
接续关系查找单元、用于在集合A中查找与LINKA存在接续关系的LINK,如果存在,则将集合A中与LINKA存在接续关系的边界LINK记作LINKB,将LINKB所在的MESH数据记为MESHB,并将LINKB所在的MESHB数据全部存入到集合B中,同时将MESHB数据自集合A中删除,如果不是,则继续选择另一条LINK,直至集合B的MESH数据中所有的LINK均判断完毕;
完备包加载单元、用于将集合B中所有数据加载为一个完备包,清空集合B,并接收下一个集合A中的MESH数据。
其中,如图10所示,所述边界LINK判断单元包括以下功能子单元;
两点判断子单元、用于判断LINKA包含的两个NODE是否落入不同MESH区域内,如果是,则判断LINKA为边界LINK;
一点判断子单元、用于当LINKA包含的两个NODE没有落入不同MESH区域内时,进一步判断LINKA的其中一个NODE是否落在边界线上,如果是,则判断LINKA为边界LINK;
非边界LINK判断子单元、用于当LINKA包含的两个NODE落入相同MESH区域内,则判断LINKA为非边界LINK。
本发明所述用于解决导航数据中数据冲突的完备包更新方法及其***,以新旧版本之间的区别数据为基础,通过分析区别数据之间的连接关系,将有关联MESH作为一个完备包,从而保证更新后整个数据的逻辑关系不会遭到破坏。现较现有技术,减少了更新的数据量,节约了更新的成本、时间,解决了数据冲突,维护了数据完整性,有利于用户体验。
本发明相关名词解释:
1.增量更新
增量更新是指导航数据在新旧数据进行更新操作时,只更新有变化的地方,不重复更新。
2.完备包
一种导航数据更新的最小单位,包含一个及以上MESH,更新完备包内的数据不影响整体数据的逻辑和完整性。
3.MESH
导航***为了方便管理和查询地图数据,通常按一定的地理坐标范围,将地图数据分幅存储。这样的一个地理坐标范围称为一个MESH,每个MESH地理位置和范围大小,分配一个唯一标识,称为MESHID(MESH编号)。
4.NODE
导航地图中用于表示道路连通网络,虚拟出来的节点对象。可以近似的理解为现实道路的一个路口。
5.LINK
导航地图中用于表示NODE与NODE之间通路的曲线型对象,由两个NODE——起始点NODE和终止点NODE,和若干形状点组成。可以近似的理解为现实道路连接两个路口的一段道路。
6.边界LINK
LINK不存在跨MESH边界的情况,所有LINK在MESH边界会被切断成两条LINK,对于一端落在MESH边界的LINK称为边界LINK。
以上装置实施例与方法实施例是一一对应的,装置实施例简略之处,参见方法实施例即可。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能性一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应超过本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机储存器、内存、只读存储器、电可编程ROM、电可檫除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其他形式的存储介质中。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。