北斗网格数据模型在数据库中的存储方法和装置与流程

文档序号:28918829发布日期:2022-02-16 12:18阅读:354来源:国知局
北斗网格数据模型在数据库中的存储方法和装置与流程

1.本公开的实施例一般涉及地理信息处理技术领域,并且更具体地,涉及一种北斗网格数据模型在数据库中的存储方法和装置。


背景技术:

2.随着信息技术的快速发展,卫星遥感、卫星导航数据获取成本的降低,对海量空间数据的存储、管理、检索要求越来越高。
3.空间数据库在近20年内得到了长足发展,国内外涌现出了不少优秀的关系型空间数据库产品,比如oracle spatial和postgis。这些数据库普遍采用由坐标或坐标序列构成的geometry几何数据模型,且空间索引普遍采用r-tree索引。传统的空间几何数据模型和空间索引在数据精度和海量数据检索性能方面存在诸多问题。
4.现有数据库中,网格编码与层级分字段存储,数据封装性和一致性得不到保障;非点要素与网格是一对多关系,数据管理不便;数据库内存储,数据库外计算,数据多次出入数据库,产生大量冗余io;数据库外计算,不能充分利用数据库的并行计算能力。


技术实现要素:

5.根据本公开的实施例,提供了一种能保证数据封装性和一致性,数据管理方便,并能够充分利用数据库的并行计算能力的北斗网格数据模型在数据库中的存储方案。
6.在本公开的第一方面,提供了一种北斗网格数据模型在数据库中的存储方法,包括:
7.获取关系型数据库中的二维坐标信息或三维坐标信息,其中,所述二维坐标信息或三维坐标信息以tb_location表的形式存储在所述关系型数据库中;
8.根据所述二维坐标信息或三维坐标信息的实际应用场景,确定对应的北斗剖分网格编码的层级,生成对应的层级字段level;
9.将所述二维坐标信息或三维坐标信息转化为对应层级的北斗剖分网格编码,生成对应的经纬度剖分编码字段code、高程剖分编码字段zcode;
10.将所述层级字段level、所述经纬度剖分编码字段code和所述高程剖分编码字段zcode封装为同一字段grid,并将字段grid存储在所述关系型数据库中对应二维坐标信息或三维坐标信息的tb_location表中,生成网格单元gridcell。
11.在一些实施例中,所述方法还包括:
12.在网格单元gridcell中定义类型标志字段dim,所述类型标志字段dim用于区分二维坐标信息和三维坐标信息对应的网格单元gridcell。
13.在一些实施例中,所述网格单元gridcell中的经纬度剖分编码字段code是将经度编码和维度编码通过莫顿编码合并成一维二进制编码存储在经纬度剖分编码字段code中的。
14.在一些实施例中,所述系型数据库中存储有网格编码算法;
15.所述将所述二维坐标信息或三维坐标信息转化为对应层级的北斗剖分网格编码,包括:
16.调用关系型数据库中存储的网格编码算法,将所述二维坐标信息或三维坐标信息转化为对应层级的北斗剖分网格编码。
17.在一些实施例中,所述获取关系型数据库中的二维坐标信息或三维坐标信息,包括:
18.获取所述关系型数据库中的tb_location表,根据所述tb_location表中的lng字段和lat字段确定所述当前坐标信息的经度和纬度;
19.根据所述tb_location表中的height字段确定所述当前坐标信息的高程。
20.在一些实施例中,所述方法还包括:
21.将所述关系型数据库中的非点要素与对应的多个网格单元gridcell封装一起,生成包括非点要素与网格单元集合的网格集合geomgrids。
22.在一些实施例中,所述网格集合geomgrids中的包括多个不同层级的网格单元gridcell,以及同一层级的多个不同的网格单元gridcell。
23.在本公开的第二个方面,提供一种北斗网格数据模型在数据库中的存储装置,包括:
24.信息获取模块,用于获取关系型数据库中的二维坐标信息或三维坐标信息,其中,所述二维坐标信息或三维坐标信息以tb_location表的形式存储在所述关系型数据库中;
25.层级确定模块,用于根据所述二维坐标信息或三维坐标信息的实际应用场景,确定对应的北斗剖分网格编码的层级,生成对应的层级字段level;
26.编码模块,用于将所述二维坐标信息或三维坐标信息转化为对应层级的北斗剖分网格编码,生成对应的经纬度剖分编码字段code、高程剖分编码字段zcode;
27.数据存储模块,用于将所述层级字段level、所述经纬度剖分编码字段code和所述高程剖分编码字段zcode封装为同一字段grid,并将字段grid存储在所述关系型数据库中对应二维坐标信息或三维坐标信息的tb_location表中,生成网格单元gridcell。
28.在本公开的第三方面,提供了一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
29.在本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如以上所述的方法。
30.通过本公开的北斗网格数据模型在数据库中的存储方法,能保证数据封装性和一致性,数据管理方便,并能够充分利用数据库的并行计算能力。
31.应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
32.结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
33.图1示出了本公开实施例一的北斗网格数据模型在数据库中的存储方法的流程
图;
34.图2示出了本公开实施例二的北斗网格数据模型在数据库中的存储装置的结构示意图;
35.图3示出了本公开实施例三的北斗网格数据模型在数据库中的存储设备的结构示意图。
具体实施方式
36.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
37.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
38.本公开实施例的北斗网格数据模型在数据库中的存储方法,能保证数据封装性和一致性,数据管理方便,并能够充分利用数据库的并行计算能力。具体地,如图1所示,为本公开实施例一的北斗网格数据模型在数据库中的存储方法的流程图。从图1中可以看出,本实施例的北斗网格数据模型在数据库中的存储方法,可以包括以下步骤:
39.s101:获取关系型数据库中的二维坐标信息或三维坐标信息,其中,所述二维坐标信息或三维坐标信息以tb_location表的形式存储在所述关系型数据库中。
40.本实施例的方法,用于对关系型数据库中的坐标信息进出处理,关系型数据库中的坐标信息的存储类型通常为geometry(经纬度坐标实现模型),在geometry中,用一个坐标表示一个地面点,用多个坐标序列表示线、面或体。由于普通空间数据库没有北斗网格剖分编码专用数据模型,更不提供针对网格剖分码模型的生成、转换、计算、分析函数;不提供基于网格剖分码模型的空间索引。基于此,本实施例将关系型数据库中的坐标信息转化为北斗剖分编码。北斗剖分编码由两部分组成:网格编码和网格层级。网格编码用于表征地理位置,网格层级用于表达网格粒度。普通关系型空间数据库没有北斗剖分编码专用存储模型,在实际应用过程中,需要将网格编码和网格分开存储;对于线和多边形的情况,一个geometry对应多个网格码,需要在数据库中维护多个网格码与一个geometry的关系。
41.首先,需要获取关系型数据库中的二维坐标信息或三维坐标信息,其中,所述二维坐标信息或三维坐标信息以tb_location表的形式存储在所述关系型数据库中。
42.s102:根据所述二维坐标信息或三维坐标信息的实际应用场景,确定对应的北斗剖分网格编码的层级,生成对应的层级字段level。
43.在获取到关系型数据库中的二维坐标信息或三维坐标信息后,需要进一步确定对应的北斗剖分网格编码的层级,生成对应的层级字段level。
44.s103:将所述二维坐标信息或三维坐标信息转化为对应层级的北斗剖分网格编码,生成对应的经纬度剖分编码字段code、高程剖分编码字段zcode。
45.具体地,可以调用在关系型数据库中用户自定义的编码算法,即本实施例的数据库支持用户自定义编码算法。
46.s104:将所述层级字段level、所述经纬度剖分编码字段code和所述高程剖分编码字段zcode封装为同一字段grid,并将字段grid存储在所述关系型数据库中对应二维坐标信息或三维坐标信息的tb_location表中,生成网格单元gridcell。
47.具体地,在关系型数据库中定义一个复合类型gridcell,用于表示北斗剖分中的一个2d或3d单元网格,2d或3d单元网格即为关系型数据中的坐标信息。北斗剖分网格分为2d网格和3d网格,其中2d网格由纬度、经度分别进行二进制剖分,然后通过莫顿编码合并成一维二进制编码。网格层级从1-32级,每级用2个二进制位表达,用64位无符号长整型(unsigned long)可存储32级二维编码。3d网格在2d网格的基础上,增加了高程剖分编码,高程剖分的范围也是1-32级,用1个二进制位表示一级剖分。用32位无符号整型(unsigned int)可存储32级高程编码。层级范围在1-32,可用unsigned char存储层级;由于gridcell是兼容2d/3d,需要指定一个类型标志dim,区别二三维网格。
48.综上所述,gridcell数据类型的结构如下:
[0049][0050]
结构中各变量如下表:
[0051][0052]
无论在32位操作系统或64位操作系统中,内存对齐后,一个gridcell对象占用的内存空间均为16字节。
[0053]
并分别实现了二三维gridcell生成函数,其原型如下:
[0054]
gridcell st_asgridcell(double lng,double lat,integer level)
[0055]
gridcell st_asgridcell3d(double lng,double lat,double height,integer level)以st_asgridcell3d为例,说明计算步骤:
[0056]
1.tb_location为关系型数据库中的表,lng、lat、height分别为坐标经度、纬度、高程。
[0057]
2.在tb_location表中增加名为grid的字段,字段类型为gridcell
[0058]
3.根据业务需求,确定网格的层级level
[0059]
4.通过update语句,更新tb_location中的grid字段。
[0060]
update tb_location set grid=st_asgridcell(lng,lat,height,level)。
[0061]
5.在st_asgridcell内部,对于每组传入的lng、lat、height、level,通过北斗网格剖分算法,生成对应的经纬度剖分编码code、高程剖分编码zcode,同level一起封装为gridcell对象返回。
[0062]
6.update语句将每个gridcell对象序列化后写入grid字段中
[0063]
7.循环执行,直到表中所有行均被执行。
[0064]
通过上述方法,可以将关系型数据库中的坐标信息转化为北斗剖分网格码的形式存储。并将北斗网格码形式的坐标信息和关系型数据库中原有的坐标信息封装在一起,保证数据封装性和一致性,数据管理方便,同时在数据库内部完成坐标信息编码形式的转换技术,从而能够充分利用数据库的并行计算能力。
[0065]
作为本公开的一个可选实施例,在上述实施例中,还可以将所述关系型数据库中的非点要素与对应的多个网格单元gridcell封装一起,生成包括非点要素与网格单元集合的网格集合geomgrids。
[0066]
具体地,在关系型数据库中定义一个复合类型geomgrids,是北斗剖网格的集合类型,由一个或多个层级相同或不同的单元网格组成。可用于表征非点几何要素,从而实现geometry对象与geomgrids对象的一一对应。
[0067]
一个geomgrids中可能会存在不同层级的单元网格,层级最高的网格单元的层级,为geomgrids对象的层级,称为detaillevel。
[0068]
geomgrids支持2d/3d的网格单元,但不会同时支持2d和3d。要求网格单元要么全是2d、要么全是3d。在geomgrids中也存在dim成员,存储维度信息。
[0069]
geomgrids存储结构如下:
[0070][0071]
结构中各个变量如下表:
[0072][0073]
cells为一个geomgrids对象中存储网格单元的偏移量。cell的长度取决于网格单元的数量和网格单元的维度类型。2d/3d情况下存储结构有所差异,为了节省存储空间,当geomgrids为2d时,不存储网格单元的zcode值。
[0074]
cells内部结构(2d)
[0075]
code1level1code2level2
……
code_nlevel_n
[0076]
cells内部结构(3d)
[0077]
code1zcode1level1code2zcode2level2
……
code_nzcode_nlevel_n
[0078]
本实施例的方法,能够见关系型数据库中的非点要素以北斗剖分网格编码的形式存储,并建立非点要素的经纬度坐标存储方式和北斗剖分网格编码存储方式的关联关系,保证数据封装性和一致性,数据管理方便。
[0079]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应所述知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应所述知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
[0080]
以上是关于方法实施例的介绍,以下通过装置实施例,对本公开所述方案进行进一步说明。
[0081]
如图2所示,为本公开实施例二的北斗网格数据模型在数据库中的存储装置的结构示意图。本实施例的北斗剖分网格编码的存储装置,包括:
[0082]
信息获取模块201,用于获取关系型数据库中的二维坐标信息或三维坐标信息,其中,所述二维坐标信息或三维坐标信息以tb_location表的形式存储在所述关系型数据库中。
[0083]
层级确定模块202,用于根据所述二维坐标信息或三维坐标信息的实际应用场景,确定对应的北斗剖分网格编码的层级,生成对应的层级字段level。
[0084]
编码模块203,用于将所述二维坐标信息或三维坐标信息转化为对应层级的北斗剖分网格编码,生成对应的经纬度剖分编码字段code、高程剖分编码字段zcode。
[0085]
数据存储模块204,用于将所述层级字段level、所述经纬度剖分编码字段code和所述高程剖分编码字段zcode封装为同一字段grid,并将字段grid存储在所述关系型数据库中对应二维坐标信息或三维坐标信息的tb_location表中,生成网格单元gridcell。
[0086]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0087]
图3示出了可以用来实施本公开的实施例的电子设备300的示意性框图。如图所示,设备300包括中央处理单元(cpu)301,其可以根据存储在只读存储器(rom)302中的计算机程序指令或者从存储单元308加载到随机访问存储器(ram)303中的计算机程序指令,来执行各种适当的动作和处理。在ram 303中,还可以存储设备300操作所需的各种程序和数据。cpu 301、rom 302以及ram 303通过总线304彼此相连。输入/输出(i/o)接口305也连接至总线304。
[0088]
设备300中的多个部件连接至i/o接口305,包括:输入单元306,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许设备300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0089]
处理单元301执行上文所描述的各个方法和处理,其被有形地包含于机器可读介
质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由rom 302和/或通信单元309而被载入和/或安装到设备300上。当计算机程序加载到ram 303并由cpu 301执行时,可以执行上文描述的方法的一个或多个步骤。备选地,在其他实施例中,cpu 301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述方法。
[0090]
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)等等。
[0091]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0092]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0093]
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
[0094]
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1