导航地图数据管理方法、设备及存储介质
文献发布时间:2023-06-19 11:26:00
技术领域
本发明涉及数据处理技术领域,特别涉及一种导航地图数据管理方法、设备及存储介质。
背景技术
现有技术中,对地图信息的管理是单纯基于数据库的管理办法,用户需要插入指定数据时只能以一条K-V记录的形式插入,而在导航地图中,常常会用一个数据计算出另一个数据后再插入数据库,如果需要对比由同一激光雷达点云作为输入并通过不同算法计算出的栅格地图的效果时,就必须遍历整个数据库以确定parent为该激光雷达点云的key的栅格地图,效率太低且这种列表结构无法反映数据之间的依赖关系,当需要查看整个存储的树状结构时也十分不方便。另一种做法是在每次计算完栅格地图插入时,编辑父类的son属性,其代表激光雷达算出的栅格地图的key,但仍然无法反映数据之间的依赖关系。此外,为了应用的方便,还需要为激光雷达点云及栅格地图计算出的另一类型数据等整个链条的数据均维持同一个名称,当需要更改链条数据的名称时,对数据库的处理是极为复杂的,并且记录往往要增加许多额外属性,这一属性对应的许多数据在存入数据库时是不使用的,这就造成了内存浪费。
发明内容
针对一般地图存储数据库不适应导航地图使用的缺陷,本发明提出一种专门针对导航地图的基于git的导航地图数据管理方法、设备及存储介质。
第一方面,本发明提供了一种导航地图数据管理方法。
所述导航地图数据管理方法包括:采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库;将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中,基于所述git仓库对所述导航地图数据进行存储和管理。
第二方面,本发明提供了一种导航地图数据管理装置。
所述导航地图数据管理装置包括:数据库创建模块,用于采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库;数据插入模块,用于将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中;数据管理模块,用于基于所述git仓库对所述导航地图数据进行存储和管理。
第三方面,本发明提供了一种电子设备。
所述电子设备包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的数据管理程序,所述数据管理程序被所述处理器运行时,执行所述的导航地图数据管理方法。
第四方面,本发明提供了一种计算机可读存储介质。
所述计算机可读存储介质上存储有数据管理程序,所述数据管理程序被一个或者多个处理器执行,以实现所述的导航地图数据管理方法的步骤。
本发明提供的导航地图数据管理方法、设备及存储介质,通过采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库;将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中,基于所述git仓库对所述导航地图数据进行存储和管理,克服了利用一般地图存储数据库存储导航地图的缺陷,直观地反应了导航地图数据之间的依赖关系,能够方便快速地展示导航地图对应的整个树状结构,也能够方便地进行不同环节不同算法的性能验证,同时也可以通过预先设置的分支链路名称快速定位至用户所需要的指定数据,提高了数据存储的便捷性和数据读取的效率;进一步地,由于采用git作为底层数据关系的组织形式,因此也实现了分布式数据库的要求,提高了数据存储的效率。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
在附图中:图1是本发明导航地图数据管理方法的一种实施方式的流程示意图。
图2是本发明导航地图数据管理方法中commit单链路的一种实施方式的链路结构示意图。
图3是本发明导航地图数据管理方法中由commit链路组成的树结构git-tree的一种实施方式的树结构示意图。
图4是本发明导航地图数据管理装置的一种实施方式的功能模块示意图。
图5是本发明电子设备的一种实施方式的内部结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明提供了一种导航地图数据管理方法、设备及存储介质,解决了针对一般地图存储数据库不适应导航地图使用的缺陷问题;比如,使用一般地图存储数据库存储导航地图时,无法直观反映导航地图数据之间的依赖关系,数据读取效率低且不方便快速对原始数据进行不同算法性能的验证,也无法对整条链路进行同一名称维护等问题。
如图1所示,图1是本发明导航地图数据管理方法的一种实施方式的流程示意图;在图1所述的实施例中,本发明导航地图数据管理方法可以实施为如下描述的步骤S10-S30。
步骤S10、采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库。
本发明实施例中,针对导航地图数据的存储,采用git作为底层数据关系的组织形式;git是一个开源的分布式版本控制系统,能够敏捷高效地处理任何或大或小的项目,因此,在处理导航地图数据的存储和读取时,也能够提高数据的存取效率。在使用时,会先创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库。为后续采用git的任意指令以非代码的形式操作整个git仓库提供了重要基础。
步骤S20、将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路。
步骤S30、将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中,基于所述git仓库对所述导航地图数据进行存储和管理。
将导航地图数据导入到创建的git仓库时,以字节流列表的形式导入,后续读取指定的数据时,得到的也是字节流列表,读取时按照数据存储的形式进行数据解析即可。在一个实施例中,可以按照最小单位git-commit作为数据插入的单位,插入的内容即为所要出入的导航地图数据,插入后得到对应的commit链路。将整个commit链路及其整个所述commit链路包含的结构及对应的内容均存储至创建的git仓库中,从而基于存储导航地图数据后的所述git仓库,对已存储的所述导航地图数据进行存储和管理。
在一个实施例中,图1所述实施例的“步骤S20、将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路”可以按照如下技术手段实施。
根据预设的插入单位(比如最小单位git-commit),以及插入数据所对应的commitMsg,将所述导航地图数据,按照对应的固定项目的commit内容结构以及非固定项目的属性内容结构,以字节流列表的形式导入,成为对应的commit链路;其中,所述commitMsg包括:组成所述非固定项目的属性内容结构的至少一个属性,以及组成所述固定项目的commit内容结构的描述文件、原始数据、特征信息、位姿和地图信息以及语义地图。
比如,在一个具体的应用场景中,按照commitMsg分别为描述文件Manifests、原始数据Raw Data、特征信息Feature、位姿和地图信息Pose And Map、语义地图Semantic Map,以及属性Attribute_1、属性Attribute_2 …… 属性Attribute_n的顺序,组织git-commit链路;其中,描述文件Manifests、原始数据Raw Data、特征信息Feature、位姿和地图信息Pose And Map、语义地图Semantic Map为固定项,后续的属性Attribute_1、Attribute_2…Attribute_n均为非固定项目。单个链路的链路结构如图所示,图2是本发明导航地图数据管理方法中commit单链路的一种实施方式的链路结构示意图。
本发明实施例中,所述描述文件Manifests可以理解为:描述这条链路的commit,其内容为一个以xml的形式描述了后续链路情况的文件,其需要描述后续固定commit(描述文件Manifests、原始数据Raw Data、特征信息Feature、位姿和地图信息Pose And Map、语义地图Semantic Map)对应的内容结构,以及后续非固定项目(比如属性Attribute_1、Attribute_2…Attribute_n)对应的内容结构。在实际应用中,为了确保数据存储的稳定性,可以在对应链路暂未确定之前就配置好对应的描述文件Manifests;且通常情况下,该描述文件Manifests在预设时长内(比如1-2年内)不允许更改。所述原始数据Raw Data可以理解为激光雷达点云对应的数据等,或者采用其他方式采集得到的原始数据。另外,所述语义地图Semantic Map在一个具体的应用场景中,可以采用indoor GML的形式表示;当然,也可以根据具体需求,采用其他的形式来描述对应的语义地图。
在一个实施例中,图1所述实施例的“步骤S20、将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路”还可以按照如下技术手段实施。
将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为多个blob,将多个blob按照对应的数据存储关系与一个树结构进行对应,并以所述树结构生成对应的commit链路。
进一步地,在一个实施例中,根据所述导航地图数据的存储关系,可以在任意commit链路上产生对应的分支链路。
进一步地,在一个实施例中,根据所述导航地图数据的存储关系,在任意commit链路上产生对应的分支链路,可以按照如下技术手段实施。
根据所述导航地图数据的存储关系,在任意一个commit单链路上产生对应的分支链路,并配置所有分支链路的最后一个git-refs均指向所述分支链路的最后一个节点,且所述最后一个节点的名称即为所述分支链路对应的分支名称;位于同一根目录下的所有commit链路对应的完整结构,形成了一个树结构对应的git-tree。
比如,在一个具体的应用场景中,可以在任意commit链路上产生分支,表示之后的commit都由该commit计算得出,且在所有的链路最后一个git-refs,即最后一个弹性文件系统Resilient File Systems中,将指向该链路的最后一个节点,且最后一个git-refs所指向的最后一个节点的名称即为分支链路对应的分支名称branch_name。上述处于同一根目录下的完整链路结构形成了一个git树结构即git-tree,如图3所示,图3是本发明导航地图数据管理方法中由commit链路组成的树结构git-tree的一种实施方式的树结构示意图。在图3所述实施例中,由于root是所有数据的根,因此本发明实施例中的root不存储任何导航地图数据。
在一个实施例中,图1所述实施例的“步骤S30、基于所述git仓库对所述导航地图数据进行存储和管理”,可以按照如下技术手段实施。
接收采用git指令以非代码的形式操作整个git仓库的git指令,获取所述git指令对应的操作任务,执行所述操作任务并输出任务执行结果。
本发明实施例中,基于创建的git仓库,可以采用git的任意指令以非代码的形式,操作整个git仓库。比如,在一个具体的应用场景中,可以采用“git k --all”指令打印整个git仓库的树结构;当系统接收到“git k --all”指令时,获取该指令对应的操作任务是打印整个git仓库的树结构,则执行对应的打印操作并输出对应的任务执行结果。进一步地,也可以反馈任务执行结果至对应的终端,或者保留所有操作任务的执行记录等,以便查看。
在一个实施例中,图1所述实施例的“步骤S30、基于所述git仓库对所述导航地图数据进行存储和管理”,还可以按照如下技术手段实施。
接收查找指定分支链路数据的操作指令,根据所述操作指令获取所述分支链路对应的分支名称,定位至对应分支链路的最后一个节点;根据定位的所述最后一个节点,按照对应的commitMsg,找到所述操作指令所指定的分支链路数据,返回所述分支链路数据对应的字节流列表。
在一个具体的应用场景中,比如需要查找指定分支链路branch所对应的数据时,利用git能够快速地定位至指定分支链路branch的结尾,即指定分支链路branch的最后一个节点;然后按照最后一个节点对应的commitMsg,即可快速找到对应的指定数据。本发明实施例中,由于在将导航地图数据存储至git仓库时,采用的是字节流列表的形式,因此,当从git仓库读取指定的导航地图数据时,读取得到的也是以字节流列表的形式表示的数据,此时,可以按照导航地图数据存入git仓库时的形式进行解析即可。
本发明导航地图数据管理方法,通过采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库;将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中,基于所述git仓库对所述导航地图数据进行存储和管理,克服了利用一般地图存储数据库存储导航地图的缺陷,直观地反应了导航地图数据之间的依赖关系,能够方便快速地展示导航地图对应的整个树状结构,也能够方便地进行不同环节不同算法的性能验证,同时也可以通过预先设置的分支链路名称快速定位至用户所需要的指定数据,提高了数据存储的便捷性和数据读取的效率;进一步地,由于采用git作为底层数据关系的组织形式,因此也实现了分布式数据库的要求,提高了数据存储的效率。
对应上述实施例提供的一种导航地图数据管理方法,本发明实施例还提供了一种导航地图数据管理装置。如图4所示,在图4所述实施例中,所述导航地图数据管理装置包括数据库创建模块101、数据插入模块102以及数据管理模块103。
其中,所述数据库创建模101用于:采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库。
数据插入模块102用于:将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中。
数据管理模块103用于:基于所述git仓库对所述导航地图数据进行存储和管理。
需要说明的是,上述装置项对应的实施例与方法实施例属于同一构思,其具体实现过程详细见方法实施例,且方法实施例中的技术特征在装置项实施例中均对应适用,这里不再赘述。
本发明导航地图数据管理装置,通过采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库;将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中,基于所述git仓库对所述导航地图数据进行存储和管理,克服了利用一般地图存储数据库存储导航地图的缺陷,直观地反应了导航地图数据之间的依赖关系,能够方便快速地展示导航地图对应的整个树状结构,也能够方便地进行不同环节不同算法的性能验证,同时也可以通过预先设置的分支链路名称快速定位至用户所需要的指定数据,提高了数据存储的便捷性和数据读取的效率;进一步地,由于采用git作为底层数据关系的组织形式,因此也实现了分布式数据库的要求,提高了数据存储的效率。
本发明还提供了一种电子设备,所述电子设备可以按照图1所述的导航地图信息管理方法来存储和管理对应的导航地图数据。如图5所示,图5是本发明电子设备的一种实施方式的内部结构示意图。
在本实施例中,电子设备1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、便携计算机等终端设备。该电子设备1至少包括存储器11、处理器12,通信总线13,以及网络接口14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的硬盘。存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如数据管理程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据管理程序01等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该电子设备1与其他电子设备之间建立通信连接。
可选地,该电子设备1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有组件11-14以及数据管理程序01的电子设备1,本领域技术人员可以理解的是,图5示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
基于以上实施例的描述,在图5所示的电子设备1实施例中,存储器11中存储有数据管理程序01;所述存储器11上存储的数据管理程序01可在所述处理器12上运行,所述数据管理程序01被所述处理器12运行时实现如下步骤:采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库;将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中,基于所述git仓库对所述导航地图数据进行存储和管理。
需要说明的是,上述设备实施例与方法实施例属于同一构思,其具体实现过程详细见方法实施例,且方法实施例中的技术特征在设备实施例中均对应适用,这里不再赘述。
本发明电子设备,通过采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库;将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中,基于所述git仓库对所述导航地图数据进行存储和管理,克服了利用一般地图存储数据库存储导航地图的缺陷,直观地反应了导航地图数据之间的依赖关系,能够方便快速地展示导航地图对应的整个树状结构,也能够方便地进行不同环节不同算法的性能验证,同时也可以通过预先设置的分支链路名称快速定位至用户所需要的指定数据,提高了数据存储的便捷性和数据读取的效率;进一步地,由于采用git作为底层数据关系的组织形式,因此也实现了分布式数据库的要求,提高了数据存储的效率。
此外,本发明实施例还提供了一种计算机可读存储介质。
所述计算机可读存储介质上存储有数据管理程序,所述数据管理程序可以被一个或者多个处理器执行,以实现如下操作:采用git作为底层数据关系的组织形式,创建.git文件夹,并将创建的所述.git文件夹作为存储导航地图数据的git仓库;将要插入所述git仓库的所述导航地图数据以字节流列表的形式导入,成为commit链路;将整个所述commit链路及其整个所述commit链路包含的结构及对应的内容插入至所述git仓库中,基于所述git仓库对所述导航地图数据进行存储和管理。
需要说明的是,本发明计算机可读存储介质实施例与方法实施例属于同一构思,其具体实现过程详细见方法实施例,且方法实施例中的技术特征在介质实施例中均对应适用,这里不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
- 导航地图数据管理方法、设备及存储介质
- 地图数据、地图数据生成方法、存储介质以及导航设备