CN111538735A - 基于任意数据库的空间数据编码、查询方法和电子设备 - Google Patents
基于任意数据库的空间数据编码、查询方法和电子设备 Download PDFInfo
- Publication number
- CN111538735A CN111538735A CN202010648922.9A CN202010648922A CN111538735A CN 111538735 A CN111538735 A CN 111538735A CN 202010648922 A CN202010648922 A CN 202010648922A CN 111538735 A CN111538735 A CN 111538735A
- Authority
- CN
- China
- Prior art keywords
- spatial
- grid
- spatial data
- data
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于任意数据库的空间数据编码、查询方法和电子设备,在空间数据库内建立空间表;所述空间表用于存储地理几何对象,所述地理几何对象用于在地球空间范围内表示空间数据的空间位置和特征;所述空间数据库包括不支持、仅部分支持或完全支持空间索引功能的数据库;获取包括多个空间数据的空间数据集合;对所述空间数据集合中的每项空间数据进行编码;将编码后的空间数据存入所述空间索引表;发送查询指令,向空间数据库请求空间数据查询。该编码及查询方法,将空间数据的空间矩形的相交关系转化为编码的关系运算,在此基础上利用的查询优化将转化为空间优化,有利于提高数据查询效率。
Description
技术领域
本发明涉及空间数据库领域,更具体地说,涉及一种基于任意数据库的空间数据编码、查询方法和电子设备。
背景技术
GIS行业中空间数据库是一切应用的基石,存储与查询空间数据有着至关重要的战略意义,这其中有一项关键技术: 空间索引技术。空间索引是空间数据库的一个核心技术,它为高效的空间查询提供了保障,如果没有空间索引,当前很多与地理位置相关的应用都将变得异常缓慢,例如常见的公交路线查询, 位置服务, 地图服务等。
目前国外或者开源主流的数据库系统中都内置了空间索引,例如Oracle, MySQL、PostgerSQL,但仍然有很多数据库系统没有提供空间索引的支持,或者数据库系统仅支持部分空间数据与索引。例如,目前国内的数据库-达梦数据库、人大金仓数据库和南大通用数据库等,这些数据库中大多都仅仅支持一般数据的索引,如字符或者数字类型的数据索引,或者仅仅支持简单的点线面空间数据,但,不支持多点、多线、多面或者三维数据空间数据等复杂空间数据,如南大通用数据库,其不支持完整的空间数据的对象索引。
为了在没有提供空间索引的支持或仅支持部分空间数据与索引的数据库系统上建立空间数据库,目前已有的解决方案就是全表遍历或者将空间数据的外包围盒(范围)用4个字段的联合索引来存储。当中,用全表扫描来做一些简单应用是没有问题的,但是如果要做大型应用,或者空间数据量较大,那么就很难达到应用效果,因为全表扫描需要将数据库中空间数据全部下载到客户端,然后用本地几何运算处理,这样数据传输就需要很大的时间,基本不可能达到实时。
另一种目前常见的技术方案就是将空间数据的外包围盒矩形存储为四个浮点型字段,然后用联合索引建立索引(联合索引目前所有现代数据库都支持),当需要查询应用的时候,就可以使用上述建立的四个浮点型字段作为索引进行初步过滤,过滤后的数据将由服务端在传送到客户端后,在客户端内再次做精确的几何比较操作,从而最终得到精确的查询结果,此种方案一定程度上可以减少查询开销,但由于空间数据都是不规则的数据,且空间数据一般是存储的浮点型的数值集合,使用4个浮点型的数值字段建立联合索引并不能取得较大收益,并且4个字段的索引会加重索引负担,更加降低了查询效率。
发明内容
本发明要解决的技术问题在于,针对现有技术在一个不支持、或仅部分支持空间索引的数据库系统上,查询效率较低且数据命中率不高的缺陷,提供基于任意数据库的空间数据编码、查询方法和电子设备。
本发明解决其技术问题所采用的技术方案是:构造一种基于任意数据库的空间数据编码方法,包括以下步骤:
S1、在空间数据库内建立空间表;所述空间表用于存储地理几何对象,所述地理几何对象用于在地球空间范围内表示空间数据的空间位置和特征;所述空间数据库包括不支持、仅部分支持或完全支持空间索引功能的数据库;
S2、获取包括多个空间数据的空间数据集合;对所述空间数据集合中的每项空间数据进行编码,包括:
S21、确认地球空间范围;
S22、按照格网划分方式,将地球空间范围按区域均匀划分为若干个网格;
S23、在进行格网划分后的地球空间范围区域内,对每项空间数据的外接矩形R所占用的网格进行编码,将所得的编码数据作为空间数据的编码结果;其中:
每项编码数据均为一个64位的整型数据,所述整型数据中记录有a1位用于进行对象标识的标志位、a2位用于记录网格尺度大小和网格起始坐标(X,Y)的数据位;所述起始坐标为空间数据在格网中的左下角坐标;
所述网格包括相邻网格间存在重叠区域的冗余网格;所述冗余网格包括能够覆盖矩形R的覆盖网格以及与矩形R相交的相交网格;
对所述冗余网格进行编码时,在标志位定义不同的取值,进行覆盖网格和相交网格的区分。
基于本发明公开的一种基于任意数据库的空间数据编码方法,实现空间数据查询的方法,包括:
S3、将编码后的空间数据存入所述空间索引表;其中,在编码数据时,建立索引,基于空间索引对象与索引编码之间的映射关系,将编码结果作为空间索引编码存储在空间索引表中;
S4、发送查询指令,向空间数据库请求空间数据查询;而,查询过程中,包括:
S41、根据待查询空间数据的外接矩形范围(x0,y0)、(x1,y1),从空间索引表T_spi中请求待查询空间数据的编码结果;
S42、根据待查询空间数据设定查询编码,以查询编码作为查询空间数据的输入,将查询编码与步骤S41中查询到的空间数据编码项进行编码数值的比较;匹配成功的情况下,则输出查询结果;其中:
查询编码与空间数据采用同样的编码方式,不同的是,相对于空间数据的首位标志位,查询编码采用取反的方式进行取值。
本发明公开的一种电子设备,包括存储器和处理器,其中:
所述存储器用于存储如上述任意一种基于任意数据库的空间数据编码方法实现空间数据编码的第一执行程序;
所述存储器还用于存储如上述任意一种用于实现空间数据查询的第二执行程序;
所述处理器用于在执行第一、二执行程序后,实现空间数据的编码和查询。
在本发明所述的一种基于任意数据库的空间数据编码、查询方法和电子设备中,将空间数据的空间矩形的相交关系转化为编码的关系运算,在此基础上利用的查询优化将转化为空间优化,有利于提高数据查询效率。
实施本发明的一种基于任意数据库的空间数据编码、查询方法和电子设备,其适用性强,可以在任何数据库上构造空间数据库,并提供性能较好的空间查询能力。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明公开的一种基于任意数据库的空间数据编码方法的流程图;
图2是空间数据与空间表、空间索引表的基本关系示意图;
图3是对空间数据编码后的格式示意图;
图4是取出不同网格大小的一个抽象示意图;
图5是基于图4所示的抽象示意图,对空间数据进行编码后的示意图;
图6是本发明公开的一种基于任意数据库的空间数据查询方法的流程图;
图7是基于空间编码和查询编码的异或运算示意图;
图8是本发明公开的一种电子设备的结构示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
实施例1:
请参考图1,其为一种基于任意数据库的空间数据编码方法,包括以下步骤:
S1、在空间数据库内建立空间表T_geo;所述空间表用于存储地理几何对象,所述地理几何对象用于在地球空间范围内表示空间数据的空间位置和特征;所述空间数据库包括不支持、仅部分支持或完全支持空间索引功能的数据库;其中:
所述空间表内定义的字段包括(可参考图2所示的空间数据表):
(1)用于对存储对象进行标识的第一对象标识字段,即图2所示空间数据表中对应的Oid(唯一索引)字段;本实施例下,所述Oid字段类型为64位长整型,该字段为主键字段,其用于表示对象oid。
(2)用于定义所述地理几何对象二进制数据的geometry字段,即图2所示空间数据表中对应的GEOMETRY字段;本实施下,所述GEOMETRY字段类型为二进制类型,其用于表示空间几何二进制数据。
为了实现空间表T_geo上的高速空间查询,考虑以所述空间表T_geo为基础,建立空间索引表T_spi;所述空间索引表T_spi内定义的字段(可参考图2所示的空间索引表)包括:
用于定义空间索引编码的索引字段,即图2所示空间索引表中对应的Gid(空间索引编码)字段,其类型为64位长整型,用于定义索引编码。
与geometry字段相适应的4个用于定义空间数据外接矩形范围的坐标字段;所述坐标字段包括X0、X1、Y0和Y1字段;所述空间数据的外接矩形范围以坐标点(x0,y0)和(x1,y1)确定,其中,X0字段用于存储x0,X1字段用于存储x1,Y0字段用于存储y0,Y1字段用于存储y1;
用于定义对象id的第二对象标识字段,即图2所示空间索引表中对应的Oid(外键)字段,其类型为64位长整型,用于定义对象id。在进行空间数据查询,且查询成功的情况下,基于第二对象标识字段进行存储对象oid的关联,即关联到空间表的Oid主键字段,从而输出对象oid。
具体的,在实施本步骤的时候,本领域人员应当知晓的是:
1、一个空间索引表T_spi包括2个元信息,分别为长度单位和最大尺度;所述长度单位是指索引表定义的1对应的坐标长度。例如,在经纬度的坐标系统中,数据的坐标一般都比较小,如果选择物理长度0.1千米作为长度单位,那么索引表中的长度单位就是0.1*6.28/40000=0.0000157。在用“米”做单位的坐标系统中,如果选择物理长度0.1千米作为长度单位,那么索引表中的长度单位就是100。实际数据的坐标除以长度单位后,将变换成空间索引表T_spi的坐标,本实施例接下来讨论的对象其坐标都是指索引表坐标。
2、最大尺度是指空间索引表T_spi能接受的对象大小(例如长、宽、面积、周长等),例如,某索引表最大尺度为10,那么当索引对象的长或宽超过2^10=1024时,该表不能为其索引。如果某索引表最大尺度为16,那么当索引对象的长或宽超过2^16=65536时,该表不能为其索引。这里的不能索引是指索引表将对象当作无穷大对象看待,该对象与任何对象都在空间上相交。
S2、获取包括多个空间数据的空间数据集合;对所述空间数据集合中的每项空间数据进行编码,包括:
S21、确认地球空间范围;
S22、按照格网划分方式,将地球空间范围按区域均匀划分为若干个网格;
S23、在进行格网划分后的地球空间范围区域内,对每项空间数据的外接矩形R所占用的网格进行编码,将所得的编码数据作为空间数据的编码结果;其中:
在进行编码的时候,考虑将每项编码数据定义为一个64位的整型数据,所述整型数据中记录有a1位用于进行对象标识的标志位、a2位用于记录网格尺度大小和网格起始坐标(X,Y)的数据位;所述起始坐标为空间数据在格网中的左下角坐标;当前编码形式下,可参考图3对该部分的内容进行理解。图中以表格的形式进行了说明,从图中可知,其中,按照从左到右的顺序,依次排列的是1位标志位、7位记录网格尺度大小的尺度字段、56位用于定义网格起始坐标(X,Y)的格网坐标字段。
本实施例下,标志位和数据位之间,采用连接字符进行连接,得到的编码形式为“C_S_X_Y”,其中,“_”为连接字符,C为标志位,S为网格的尺度大小,(X,Y)为相交网格或覆盖网格对应的起始坐标。例如:某一空间数据的编码结果为“1_3_100_200”,根据当前编码结果可知,其表示的编码为C值为1,S值为3,X值为100,Y值为200(其中,取到的C值,可参考图3进行理解)。
本实施例下,所述网格包括相邻网格间存在重叠区域的冗余网格;在实施的时候,若用四个值描述一个矩形,如R=[10,5,2,3]表示一个矩形,可进一步明了的是:
矩形R的最小坐标为(10,5);
矩形R的长为2,宽为3。
上述定义的矩形即为一般形式的矩形,该类型矩形在格网划分的区域内所占用的网格,与其他网格之间没有重叠区域,即一般矩形之间不涉及到重叠区域。
下面将提出本实施例下的第二个概念:
若一个矩形R能写成R=[x*n,y*n, 2*n,2*n]的形式,且满足n=2^s,x,y,s都是整数,那么本实施例下将该矩形所占用的网格定义为冗余网格。当前,若用矩形G=[s,x,y]来表示冗余网格,根据上述的定义形式可知:
s表示G的尺度,(x,y)表示G的起始坐标。
因此,基于上述提出的一般网格和冗余网格概念,在确定了空间数据的外接矩形R后,若已知R(G)=[x*2^s,y*2^s,2*2^s,2*2^s],则可以将其按照上述的方式进行换算,得到冗余网格G的定义形式。
而,在对一般网格和冗余网格进行区分之后,需要说明的是:
本实施例在进行空间数据编码的时候,是以冗余网格为对象,因为在同一个尺度下,一般网格之间是没有重叠区域的,而冗余网格则有重叠,相对于一般网格,冗余网格在空间编码的几何特性上要好很多,基于冗余网格进行数据编码间接的可以提高查询效率。
请参考图4,其为取出不同网格大小的一个抽象示意图,其中:
所述冗余网格包括能够覆盖矩形R的覆盖网格以及与矩形R相交的相交网格;在确定覆盖网格时,可参考图4最左边的示意图,当前,在判断覆盖网格和相交网格的时候,包括以下步骤:
1、定义S(R) 为一个最佳格网大小, 意为此格网大小正好能完全包含这个几何对象;
2、在确定目标网格的实际大小S之后,若有S>S(R) ,则该网格将被归类为覆盖网格(覆盖网格的定义形式,可按照从左到右的顺序,参考图4中的第一幅示意图);
3、而,相交网格则与覆盖网格相反,在确定目标网格的实际大小S之后,若有 S<S(R),则该网格将被归类为相交网格(相交网格的定义形式,可按照从左到右的顺序,参考图4中的第三幅示意图和第四幅示意图);
4、在确定目标网格的实际大小S之后,若有S=S(R),则证明对应的目标网格为一个最佳的格网(最佳格网的定义形式,可按照从左到右的顺序,参考图4中的第二幅示意图)。
然后,通过上述的步骤1-4对覆盖网格和相交网格进行分类后,在进行编码的过程中,本实施例下,考虑在覆盖网格和相交网格的标志位定义不同的取值,从而保证对最佳网格、覆盖网格和相交网格的区分;其中,若以数值0和数值1进行区分,本实施例下考虑的取值规则为:
1、当S>=S(R)时(即当前的目标网格被归类为覆盖网格或最佳网格),C值取0;
2、当S<S(R)时(即当前的目标网格被归类为相交网格),C值取1。
基于图4所示的四幅图,图中,基于每个网格进行空间数据编码后的形式可参考图5,由图5所知:
空间索引表一行记录包含:64位编码(标志位C,格网大小R,格网起始坐标X,Y),几何对象外接矩形范围(x0,y0)(x1,y1),这里不需要记录格网终点坐标,因为,当前在确定了几何对象外接矩形范围(x0,y0)(x1,y1)后,可以通过坐标点(x0,y0)与(x1,y1)之间的距离差,计算出格网的终点;如果“(x1-x0)/R”为整数,那么格网终点的横坐标取为“X+ (x1-x0)”,否则,格网终点的横坐标取为“X+{|(x1-x0)/R|+1} *R”,即取整加1后再乘以R。同理,格网终点的纵坐标采用上述计算方式后也能够进一步明确。
实施本实施例带来的有益效果,不限于可以在任何数据库上构造空间数据库,且基于空间数据外接矩形所占用的网格进行编码,一定程度上,在一个不支持空间索引或者支持不完整的数据库系统上,构建了一个更加高效的空间数据库索引。
实施例2:
基于实施例1,由于同尺度的冗余网格有重叠,所以,一个尺度下可能有多个网格覆盖一个矩形,或存在多个网格与前述的矩形相交。
当前,仍然以矩形R=[10,5,2,3]为例,当矩形R的尺度为1的时候,只有网格G[1,5,2]可以覆盖矩形R;当矩形R的尺度为2的时候,就有以下4个网格:G1[2,1,0],G2[2,1,1],G3[2,2,0]和G4[2,2,1],可以覆盖矩形R。
因此,若同一尺度下存在多个网格覆盖矩形R,为了从中筛选出所有的覆盖网格,本实施例采用的执行方案为:
定义坐标最小的一个网格作为对应尺度下的覆盖网格代表:
A1、同一尺度下,选择坐标最小的一个覆盖网格作为对应尺度的最优覆盖网格;
A2、在已知能够覆盖矩形R的冗余网格最小尺度值SR,以及空间索引表的最大尺度值Smax的情况下;
若,SR<Smax,则,从SR开始到Smax,每个尺度下选出一个最优覆盖网格coveri,组成覆盖网格集cover(R)=[cover1,cover2,...,cover(Smax-SR+1)];其中,i=[1,2,...,(Smax-SR+1)];coveri=[Si,xi,yi],Si为覆盖网格coveri的尺度值,xi和yi为覆盖网格coveri的起始坐标点;
若,SR>=Smax,则cover(R)=[Smax,0,0];
基于步骤A1-A2可知:
例如,Smax=4,R=[10,5,2,3],那么针对矩形R,通过上述的计算方式得到的覆盖网格集为cover(R) = {[1,5,2], [2,1,0] ,[3,0,-1] , [4,0,0]}。
作为一个特殊的情况,假如某矩形R存在s(R)>=Smax,那么cover(R)=[Smax,0,0],无论网格G[Smax,0,0]是否覆盖R。
基于步骤A1-A2还可以证明同一个尺度下,能覆盖一个矩形的网格个数一般不超过4个。
最后,在进行空间数据编码的时候,则以cover(R)为对象,对其中包括的每项最优覆盖网格coveri进行编码。
以上便是覆盖网格集的计算流程。
基于实施例1,可确定的另外一个情况是:
定义相交网格集的概念:若一个矩形R,其尺度为s(R),那么,所有尺度为s(R)的且与R相交网格称为R的相交网格集,记为函数intersect(R)。
计算所述相交网格集intersect(R)的实施步骤为:
B1、确认矩形R的尺度SR1,若SR1<Smax,则:
将所有网格尺度为SR1且与矩形R相交的网格作为相交网格,并组成相交网格集intersect(R)=[intersect1,intersect2,...,intersectn];其中,intersectr=[SR1,Xr,Yr],r=[1,2,...,n];Xr和Yr为相交网格intersectr的起始坐标,n为相交网格的总数量;
B2、若SR1>=Smax,则intersect(R)=[Smax,0,0];
基于步骤B1-B2可以明了的是:
例如R=[10,5,2,3],s(R)=1,基于步骤B1-B2下,可以得出的相交网格集为intersect(R)={[1,4,1] , [1,4,2] , [1,4,3] , [1,5,1] , [1,5,2] , [1,5,3]}。
作为一个特殊的实施情况,假如一个索引表的最大尺度为Smax,某个矩形R的尺度s(R)>=Smax,则,intersect(R)=[Smax,0,0],无论网格[Smax,0,0]是否与R相交。
另外,本实例下,经过相关的实验步骤可明确的是:
基于步骤B1-B2可以证明任意R的intersect(R)的个数不超过9。
最后,在进行空间数据编码的时候,以intersect(R)为对象,对其中包括的每项相交网格intersectr进行编码。
基于实施例1,下面将针对覆盖网格集和相交网格集,以实际案例的形式做进一步说明:
首先,基于实施例1,可确定的是,本方案具体是以矩形为对象进行对象编码,所述对象编码是指将一个矩形R编码成一个64位整数的集合,编码后的结果用函数code_o(R)表示,具体的:
code_o (R)包括两个部分,一个部分是将cover(R)中的每个网格进行编码,C位取0;另一部分是将intersect(R)中的每个网格进行编码,C位取1。
假如,Smax=4,矩形R0=[10,5,2,3],则,通过上述步骤A1-A2和B1-B2可确定的是:
覆盖网格集的选择结果为:cover(R0)= {[1,5,2], [2,1,0] ,[3,0,-1] , [4,0,0]};
相交网格集的选择结果为:Intersect(R0)={ [1,4,1] , [1,4,2] , [1,4,3] , [1,5,1] , [1,5,2] , [1,5,3]}。
在对code_o (R)进行对象编码(即对其中包括的cover(R)和intersect(R)编码)后,编码结果为:
code_o (R0) = 0_1_5_2, 0_2_1_0,0_3_0_-1,0_4_0_0, 1_1_4_1 , 1_1_4_2 ,
1_1_4_3 , 1_1_5_1 , 1_1_5_2 , 1_1_5_3;
若有矩形R1=[0,0,1000,1000],对矩形R1进行对象编码后,则对应的编码结果为:
code_o (R1)= 0_4_0_0,1_4_0_0。
上述情况,也正好对应于s(R)>=Smax,SR1>=Smax情况下,对于相交网格和覆盖网格的选择,及选择到了相应的相交网格和覆盖网格后,对相交网格和覆盖网格进行编码后的结果。
本实施例考虑了冗余网格的重叠特性,当一个尺度下存在多个网格与目标矩形相交或覆盖,优先从每个尺度下选择覆盖网格代表,或根据网格的尺度且根据目标矩形之间的相交性进行相交网格的划分,一定程度上提高了编码精度。
实施例3:
基于实施例1-2,当需要进行空间数据查询的时候,其实施过程可参考图6,包括以下实施步骤:
S3、将编码后的空间数据存入所述空间索引表;其中,建立索引,基于空间索引对象与索引编码之间的映射关系,将编码结果作为空间索引编码存储在空间索引表中;其中,空间数据的编码和空间索引表中的编码是同一种数据, 理论上可一一对应;
S4、发送查询指令,向空间数据库请求空间数据查询;而,查询过程中,包括以下子步骤:
S41、根据待查询空间数据的外接矩形范围(x0,y0)、(x1,y1),从空间索引表T_spi中请求待查询空间数据的编码结果;
S42、根据待查询空间数据设定查询编码,以查询编码作为查询空间数据的输入,将查询编码与步骤S41中查询到的空间数据编码项进行编码数值的比较;匹配成功的情况下,则输出查询结果;其中:
在进行编码数值比较的过程中,标志位是基于异或运算方式,进行匹配识别,这是由于查询编码与空间数据采用同样的编码方式,不同的是,相对于空间数据的首位标志位,查询编码采用取反的方式进行取值。
在定义查询编码的时候,可参考以下实施过程:
在定义查询编码的时候,其等同于实施例1-2所述的编码方式,其区别仅在与相对于空间数据的首位标志位,查询编码采用取反的方式进行取值,还是以C值取0或1、对覆盖网格编码为例,在定义查询编码,且,在对覆盖网格进行编码的时候,其标志位(即C位)取值为1。而,查询编码和空间索引表的数据在存储编码上仅仅是在第一位C位是相反,这样做的目的是可以直接做计算机异或运算, 减少去比较实际空间范围, 并且空间索引表中gid字段还有数据库索引,大大加快的查询效率, 其示意图请参考图7。
基于实施例1可知,所述对象编码是指将一个矩形编码成一个64位整数的集合,用函数code_q(R)对编码结果表示,其中:
code_q (R)包括两个部分:一个部分是将cover(R)即覆盖网格集中的每个网格进行编码,其中,C位取1;另一部分是将intersect(R)即相交网格集中的每个网格进行空间编码,其中,C位取0。举例说明:
假如,Smax=4,矩形R0=[10,5,2,3]:
可确定的相交网格和覆盖网格即为:
cover(R0)= [1,5,2], [2,1,0] ,[3,0,-1] , [4,0,0];
Intersect(R0) = [1,4,1] , [1,4,2] , [1,4,3] , [1,5,1] , [1,5,2] , [1,5,3]。
在需要对目标空间数据进行查询的时候,定义的查询编码code_q (R0)即为:
code_q (R0) = 1_1_5_2, 1_2_1_0,1_3_0_-1,1_4_0_0, 0_1_4_1 , 0_1_4_2 , 0_1_4_3 , 0_1_5_1 , 0_1_5_2 , 0_1_5_3。
对于实施例2所述的两个特殊情况,若有矩形R1=[0,0,1000,1000],那么定义其对应的查询编码结果为cquery (R1)= 1_4_0_0,0_4_0_0。
本实施例下,想进一步说明的是,基于查询编码进行空间数据查询的时候,具体是基于下述相交原理,确定是否能够通过查询编码定位到目标输出数据:
假如有两个矩形R1,R2,如果满足下面两个条件中的一个,在进行索引的时候就认为矩形R1和R2相交:
1.存在网格G,若G覆盖R1,且G与R2相交。
2.存在网格G,若G覆盖R2,且G与R1相交。
基于上述原理,根据code_o(R1)(空间编码)与code_q (R2)(查询编码)的编码方案,判断两个编码集有交集的充分必要条件则是:如果cover(R1)与intercect(R2)有交集或者intersect(R1)与cover(R2)有交集,则认为基于当前的查询编码能够定位到目标输出数据。
基于实施例2还需说明的一种情况为:
若同一尺度下存在多个覆盖网格能够覆盖矩形R,以及多个相交网格能够与矩形R相交;当前,设定查询编码集合,在进行空间数据查询的时候,依次进行集合IN运算、查询编码的标志位比较,在找到最佳网格的标识oid后,输出响应结果。其中,查询编码与空间数据编码的互相作用方式是数学中的集合运算,同数据库的常用in运算类似,此过程的输入为gid集合,输出为OID集合,以实际编码为例:
第一步、输入下述查询指令从空间索引表 T_spi中查询到预先存储的gid集合:
select gid from T_spi where x1>%f AND y1>%f AND x0<%f AND y0<%f;
以实施例2中的案例为例:
若基于某查询范围,生成了的查询编码集合(QueryGid1, QueryGid2, QueryGid3,QueryGid4, QueryGid5, QueryGid6, QueryGid7, QueryGid8),将上述查询编码集合做为查询空间数据的输入,调用下述查询指令进行目标空间数据的查询,定义如下:
SELECT oid FROM T_spi WHERE gid IN(QueryGid1, QueryGid2, QueryGid3,QueryGid4, QueryGid5, QueryGid6, QueryGid7, QueryGid8)。
基于上述的查询指令可知,在基于查询编码集合和基于第一步查询到的gid集合进行集合in运算(即数据的查询过程),最终,是以空间索引表中对应的Oid(外键) 进行存储对象oid的关联,即关联到空间表的Oid主键字段,从而输出对象oid。
基于实施例1-3,本发明公开的一种基于任意数据库的空间数据编码、查询方法,其适用性强,可以在任何数据库上构造空间数据库,并提供性能较好的空间查询能力。
实施例4:
如图8所示,本发明公开的一种电子设备,其包括存储器和处理器,其中:
所述存储器用于存储如上述实施例1-2所述的基于任意数据库的空间数据编码方法实现空间数据编码的第一执行程序;
所述存储器还用于存储如上述实施例3所述的用于实现空间数据查询的第二执行程序;
当所述处理器执行了第一、二执行程序后,即可实现空间数据的编码和查询。
本发明公开的一种基于任意数据库的空间数据编码、查询方法和电子设备中,将空间数据的空间矩形的相交关系转化为编码的关系运算,在此基础上利用的查询优化将转化为空间优化,有利于提高数据查询效率。且,本发明可以在任何数据库上构造空间数据库,并提供性能较好的空间查询能力,其适用性强,具有较好的应用前景。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种基于任意数据库的空间数据编码方法,其特征在于,包括以下步骤:
S1、在空间数据库内建立空间表;所述空间表用于存储地理几何对象,所述地理几何对象用于在地球空间范围内表示空间数据的空间位置和特征;所述空间数据库包括不支持、仅部分支持或完全支持空间索引功能的数据库;
S2、获取包括多个空间数据的空间数据集合;对所述空间数据集合中的每项空间数据进行编码,包括:
S21、确认地球空间范围;
S22、按照格网划分方式,将地球空间范围按区域均匀划分为若干个网格;
S23、在进行格网划分后的地球空间范围区域内,对每项空间数据的外接矩形R所占用的网格进行编码,将所得的编码数据作为空间数据的编码结果;其中:
每项编码数据均为一个64位的整型数据,所述整型数据中记录有a1位用于进行对象标识的标志位、a2位用于记录网格尺度大小和网格起始坐标(X,Y)的数据位;所述起始坐标为空间数据在格网中的左下角坐标;
所述网格包括相邻网格间存在重叠区域的冗余网格;所述冗余网格包括能够覆盖矩形R的覆盖网格以及与矩形R相交的相交网格;
对所述冗余网格进行编码时,在标志位定义不同的取值,进行覆盖网格和相交网格的区分。
2.根据权利要求1所述的基于任意数据库的空间数据编码方法,其特征在于,步骤S1中,所述空间表内定义的字段包括:
用于对存储对象进行标识的第一对象标识字段;
用于定义所述地理几何对象二进制数据的geometry字段。
3.根据权利要求2所述的基于任意数据库的空间数据编码方法,其特征在于,以所述空间表为基础,建立空间索引表T_spi;所述空间索引表T_spi内定义的字段包括:
用于定义空间索引编码的索引字段;
与geometry字段相适应的4个用于定义空间数据外接矩形范围的坐标字段;所述坐标字段包括X0、X1、Y0和Y1字段;所述空间数据的外接矩形范围以坐标点(x0,y0)和(x1,y1)确定,其中,X0字段用于存储x0,X1字段用于存储x1,Y0字段用于存储y0,Y1字段用于存储y1;
用于定义对象id的第二对象标识字段,在进行空间数据查询的时候,在查询成功的情况下,基于第二对象标识字段进行存储对象oid的关联。
4.根据权利要求1所述的基于任意数据库的空间数据编码方法,其特征在于,步骤S2中,若同一尺度下存在多个覆盖网格能够覆盖矩形R,以及多个相交网格能够与矩形R相交,则,在确认能够覆盖矩形R的覆盖网格时:
首先,同一尺度下,选择坐标最小的一个覆盖网格作为对应尺度的最优覆盖网格;
其次,在已知能够覆盖矩形R的冗余网格最小尺度值SR,以及空间索引表的最大尺度值Smax的情况下;若,SR<Smax,则,从SR开始到Smax,每个尺度下选出一个最优覆盖网格coveri,随后,组成一个覆盖网格集cover(R)=[cover1,cover2,...,cover(Smax-SR+1)];其中,i=[1,2,...,(Smax-SR+1)];coveri=[Si,xi,yi],Si为覆盖网格coveri的尺度值,xi和yi为覆盖网格coveri的起始坐标点;
若,SR>=Smax,则cover(R)=[Smax,0,0];
在确认相交网格时,首先,确认矩形R的尺度SR1,若SR1<Smax,则:
将所有网格尺度为SR1且与矩形R相交的网格作为相交网格,并组成相交网格集intersect(R)=[intersect1,intersect2,...,intersectn];其中,intersectr=[SR1,Xr,Yr],r=[1,2,...,n];Xr和Yr为相交网格intersectr的起始坐标,n为相交网格的总数量;
若SR1>=Smax,则intersect(R)=[Smax,0,0]。
5.根据权利要求4所述的基于任意数据库的空间数据编码方法,其特征在于,
以集合cover(R)为对象,对该集合中包括的每项最优覆盖网格coveri进行编码;
以集合intersect(R)为对象,对该集合中包括的每项相交网格intersectr进行编码。
6.根据权利要求5所述的基于任意数据库的空间数据编码方法,其特征在于,在对每项空间数据的外接矩形R所占用的相交网格或覆盖网格进行编码时,采用连接字符进行标志位和数据位的连接,得到的编码形式为“C_S_X_Y”,其中,“_”为连接字符,C为标志位,S为网格的尺度大小,(X,Y)为相交网格或覆盖网格对应的起始坐标;
为区分覆盖网格和相交网格,将覆盖网格的标志位设为0,将相交网格的标志位设为1。
7.一种利用权利要求1-6所述的任意一种基于任意数据库的空间数据编码方法实现空间数据查询的方法,其特征在于,包括:
S3、将编码后的空间数据存入所述空间索引表;其中,在编码数据时,建立索引,基于空间索引对象与索引编码之间的映射关系,将编码结果作为空间索引编码存储在空间索引表中;
S4、发送查询指令,向空间数据库请求空间数据查询;而,查询过程中,包括:
S41、根据待查询空间数据的外接矩形范围(x0,y0)、(x1,y1),从空间索引表T_spi中请求待查询空间数据的编码结果;
S42、根据待查询空间数据设定查询编码,以查询编码作为查询空间数据的输入,将查询编码与步骤S41中查询到的空间数据编码项进行编码数值的比较;匹配成功的情况下,则输出查询结果;其中:
查询编码与空间数据采用同样的编码方式,不同的是,相对于空间数据的首位标志位,查询编码采用取反的方式进行取值。
8.根据权利要求7所述的空间数据查询方法,其特征在于,步骤S42中,在所述待查询空间数据的外接矩形范围内,若同一尺度下存在多个覆盖网格能够覆盖矩形R,以及多个相交网格能够与矩形R相交;当前,通过设定查询编码集合,在进行空间数据查询的时候,依次进行集合IN运算、查询编码的标志位比较,在找到最佳网格的标识oid后,输出响应结果。
9.根据权利要求8所述的空间数据查询方法,其特征在于,步骤S42中,在进行编码数值比较的过程中,标志位基于异或运算,进行匹配识别。
10.一种电子设备,其特征在于,包括存储器和处理器,其中:
所述存储器用于存储如权利要求1-6所述的任意一种基于任意数据库的空间数据编码方法实现空间数据编码的第一执行程序;
所述存储器还用于存储如权利要求7-9所述的任意一种用于实现空间数据查询的第二执行程序;
所述处理器用于在执行第一、二执行程序后,实现空间数据的编码和查询。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010648922.9A CN111538735B (zh) | 2020-07-08 | 2020-07-08 | 基于任意数据库的空间数据编码、查询方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010648922.9A CN111538735B (zh) | 2020-07-08 | 2020-07-08 | 基于任意数据库的空间数据编码、查询方法和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538735A true CN111538735A (zh) | 2020-08-14 |
CN111538735B CN111538735B (zh) | 2020-11-03 |
Family
ID=71978274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010648922.9A Active CN111538735B (zh) | 2020-07-08 | 2020-07-08 | 基于任意数据库的空间数据编码、查询方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538735B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297215A (zh) * | 2021-05-13 | 2021-08-24 | 中国人民解放军军事科学院战争研究院 | 一种支持实时访问的三维剖分网格空间数据组织方法 |
WO2022142503A1 (zh) * | 2020-12-31 | 2022-07-07 | 京东城市(北京)数字科技有限公司 | 一种空间连接查询方法、装置、电子设备及存储介质 |
CN117667952A (zh) * | 2024-02-01 | 2024-03-08 | 北京捷泰天域信息技术有限公司 | 基于多源属性表的数据空间化方法、系统、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520801A (zh) * | 2009-01-14 | 2009-09-02 | 中国科学院地理科学与资源研究所 | 一种数据库空间几何对象存取方法 |
CN106055563A (zh) * | 2016-05-19 | 2016-10-26 | 福建农林大学 | 一种基于网格划分的并行空间查询方法及其系统 |
CN107423422A (zh) * | 2017-08-01 | 2017-12-01 | 武大吉奥信息技术有限公司 | 基于网格的空间数据分布式存储及检索方法和系统 |
US10229537B2 (en) * | 2017-08-02 | 2019-03-12 | Omnivor, Inc. | System and method for compressing and decompressing time-varying surface data of a 3-dimensional object using a video codec |
-
2020
- 2020-07-08 CN CN202010648922.9A patent/CN111538735B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520801A (zh) * | 2009-01-14 | 2009-09-02 | 中国科学院地理科学与资源研究所 | 一种数据库空间几何对象存取方法 |
CN106055563A (zh) * | 2016-05-19 | 2016-10-26 | 福建农林大学 | 一种基于网格划分的并行空间查询方法及其系统 |
CN107423422A (zh) * | 2017-08-01 | 2017-12-01 | 武大吉奥信息技术有限公司 | 基于网格的空间数据分布式存储及检索方法和系统 |
US10229537B2 (en) * | 2017-08-02 | 2019-03-12 | Omnivor, Inc. | System and method for compressing and decompressing time-varying surface data of a 3-dimensional object using a video codec |
Non-Patent Citations (1)
Title |
---|
金安等: "基于全球剖分网格的空间数据编码方法", 《测绘科学技术学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022142503A1 (zh) * | 2020-12-31 | 2022-07-07 | 京东城市(北京)数字科技有限公司 | 一种空间连接查询方法、装置、电子设备及存储介质 |
CN113297215A (zh) * | 2021-05-13 | 2021-08-24 | 中国人民解放军军事科学院战争研究院 | 一种支持实时访问的三维剖分网格空间数据组织方法 |
CN113297215B (zh) * | 2021-05-13 | 2022-07-19 | 中国人民解放军军事科学院战争研究院 | 一种支持实时访问的三维剖分网格空间数据组织方法 |
CN117667952A (zh) * | 2024-02-01 | 2024-03-08 | 北京捷泰天域信息技术有限公司 | 基于多源属性表的数据空间化方法、系统、设备及介质 |
CN117667952B (zh) * | 2024-02-01 | 2024-06-11 | 北京捷泰天域信息技术有限公司 | 基于多源属性表的数据空间化方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111538735B (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111538735B (zh) | 基于任意数据库的空间数据编码、查询方法和电子设备 | |
JP4372477B2 (ja) | 2分木を巡回する方法およびシステム | |
US6014614A (en) | Method and mechanism for performing spatial joins | |
CN110633262B (zh) | 基于Spark的地图相交区域面积计算方法及系统 | |
JP2014002519A (ja) | 時空間データ管理システム、時空間データ管理方法、及びそのプログラム | |
CN109614454B (zh) | 一种基于mpi的矢量大数据并行空间叠置分析方法 | |
CN113901159A (zh) | 基于多级空间索引的矢量数据网络传输局部加解密方法 | |
CN113806601B (zh) | 一种周边兴趣点检索方法及存储介质 | |
CN111221813A (zh) | 数据库索引以及数据库查询的处理方法、装置及设备 | |
US20130262400A1 (en) | Data index query method, apparatus and system | |
CN106649425B (zh) | 一种顾及空间邻近性的矢量空间数据编码方法 | |
CN112100308B (zh) | 一种北斗时空轨迹的相似性查询方法 | |
CN103514224A (zh) | 数据库中的数据处理方法、数据查询方法和相应装置 | |
CN115801024B (zh) | 局部等距性优化球面格网的编码方法、系统、装置及介质 | |
CN110688439A (zh) | 一种基于区域地理编码自动识别企业信息和分析的方法 | |
CN110989886A (zh) | 基于空间地图的三维空间网格选取方法及装置 | |
CN115857516A (zh) | 结合牛耕式运动与遗传算法的全覆盖路径规划方法和装置 | |
CN110297952B (zh) | 一种基于网格索引的并行化高速铁路勘测数据检索方法 | |
CN106649359B (zh) | 一种空间点数据的处理方法及装置 | |
CN114116702A (zh) | 一种基于键值数据库的邻近点快速查询方法 | |
CN114218210A (zh) | 一种数据处理方法、装置和电子设备 | |
CN114491307B (zh) | 一种设备聚合方法及装置 | |
CN116303260B (zh) | 一种基于r树连续索引的缓冲区融合并行方法和装置 | |
CN112561695B (zh) | 在区块链中并发执行交易的方法和装置 | |
CN116244338A (zh) | 几何对象筛选方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 430000 Wuda science and Technology Park, Jiangxia Avenue, Miaoshan District, Donghu Development Zone, Wuhan City, Hubei Province Patentee after: Geospace Information Technology Co., Ltd. Address before: 430000 Wuda science and Technology Park, Jiangxia Avenue, Miaoshan District, Donghu Development Zone, Wuhan City, Hubei Province Patentee before: WUDA GEOINFORMATICS Co.,Ltd. |