1.一种百万级Spatialite空间数据库的快速查询方法,其特征在于,包括如下步骤:S1:优化查询:根据用户请求的数据表判断百万级Spatialite空间数据库是否进行了优化,若没有则进入步骤S2,有则进入步骤S5;
S2:创建虚拟表:利用SQL语句,将步骤S1中用户请求的数据表转换为虚拟表;
S3:提取图斑的斑块平均距离AvgDist,提取图斑的最小外接矩形MBR,计算由步骤S2得到的虚拟表的AvgDist;
所述步骤S3中,AvgDist的计算公式为:式中AvgDist为斑块平均距离;ΔX为提取图斑的X坐标差值;ΔY为提取图斑的Y坐标差值;n为斑块数量;i为当前斑块编号;Count(RowID)为统计字段RowID出现的行数;
ΔX的计算公式为:
ΔX=MaxX‑MinX
式中ΔX为X坐标差值;MaxX为最大X坐标;MinX为最小X坐标;
ΔY的计算公式为:
ΔY=MaxY‑MinY
式中ΔY为Y坐标差值;MaxY为最大Y坐标;MinY为最小Y坐标;
S4:图斑切片:根据由步骤S3得到的图斑的AvgDist和图斑的MBR,计算图斑切片信息,进入步骤S8;
所述步骤S4中,图斑切片信息的计算方法,包括如下步骤:S4‑1:根据由步骤S3得到的图斑的MBR,计算图斑切片的最小行号、最小列号、最大行号和最大列号;
所述步骤S4‑1中,计算公式为:MinR=int(MinX/AvgDist)式中MinR为最小行号;MinX为最小X坐标;AvgDist为斑块平均距离;
MinC=int(MinY/AvgDist)式中MinC为最小列号;MinY为最小Y坐标;AvgDist为斑块平均距离;
MaxR=int(MaxX/AvgDist)式中MaxR为最大行号;MaxX为最大X坐标;AvgDist为斑块平均距离;
MaxC=int(MaxY/AvgDist)式中MaxC为最大列号;MaxY为最大Y坐标;AvgDist为斑块平均距离;
S4‑2:根据由步骤S4‑1得到的最小行号、最小列号、最大行号和最大列号,组合得到图斑切片信息;
S5:空间查询:判断步骤S1中用户请求的数据表是否含有空间查询信息,若有则进入步骤S6,没有则进入步骤S7;
S6:计算输入图斑切片号:根据步骤S5中的空间查询信息,提取用户输入的空间坐标信息,计算其对应的图斑切片号;
S7:构建SQL:根据含有空间查询信息的数据表以及由步骤S6得到的图斑切片号,或根据不含空间查询信息的数据表,构建数据查询和数据存储的SQL语句;
S8:存/取数据:将步骤S4中得到的图斑切片信息保存到百万级Spatialite空间数据库,根据步骤S7中构建的数据查询和数据存储的SQL语句对百万级Spatialite空间数据库进行读取或存储,并返回结果信息。
2.根据权利要求1所述的百万级Spatialite空间数据库的快速查询方法,其特征在于,所述步骤S1中百万级Spatialite空间数据库是否进行了优化的判断方法,包括如下步骤:S1‑1:判断数据表是否为空间数据,若是则进入步骤S1‑2,否则进入步骤S2;
S1‑2:判断数据表是否为虚拟表,若是则进入步骤S1‑3,否则进入步骤S2;
S1‑3:判断数据表是否进行了图斑切片,若是则进入步骤S5,否则进入步骤S2。
3.根据权利要求1所述的百万级Spatialite空间数据库的快速查询方法,其特征在于,所述步骤S2中虚拟表的创建方法,包括如下步骤:S2‑1:通过SQL语句提取数据表的SQL语句定义;
S2‑2:修改数据表的SQL语句定义并创建虚拟表的SQL语句;
S2‑3:执行改写后的虚拟表的SQL语句。
4.根据权利要求1所述的百万级Spatialite空间数据库的快速查询方法,其特征在于,所述步骤S6中图斑切片号的计算方法,包括如下步骤:S6‑1:提取用户输入的空间坐标信息X’和Y’;
S6‑2:根据由步骤S6‑1得到的空间坐标信息X’和Y’,计算切片的行号和列号,计算公式为:
R=int(X'/AvgDist)式中R为切片行号;X’为用户输入的X坐标;AvgDist为斑块平均距离;
C=int(Y'/AvgDist)式中C为切片列号;Y’为用户输入的Y坐标;AvgDist为斑块平均距离;
S6‑3:根据由步骤S6‑2得到的切片的行号和列号,组合得到图斑切片号。