一种基于Oracle数据库的多源异构空间数据流转方法与流程

文档序号:12063915阅读:来源:国知局

技术特征:

1.一种基于Oracle数据库的多源异构空间数据流转方法,其特征在于,包括基于Oracle的多源异构空间数据存取方法和基于Oracle的多源异构空间数据处理方法;

所述基于Oracle的多源异构空间数据存取方法,包括以下步骤:

步骤A1:数据管理层接收到数据应用层数据请求,将请求传递给用户权限角色认证模块;

步骤A2:用户权限角色认证模块对用户角色进行审核,验证通过后转入数据库节点管理模块;

步骤A3:数据库节点管理模块根据数据存储的目的地址确定访问的数据库节点;

步骤A4:数据请求调度模块查找空间数据缓存区,若没有发现所需数据,则将数据请求发送至数据统一访问口模块;

步骤A5:数据统一访问接口模块读取多源异构数据,并通过空间数据转换模块进行空间数据模型转换,转换为统一数据模型后,存入到数据缓冲区中;

步骤A6:数据预处理模块对数据进行简单的质检;

步骤A7:数据统一访问接口模块将预处理后的数据通过空间数据存取模块录入到对应的Oracle数据库节点中,完成数据的存取;

所述基于Oracle的多源异构空间处理方法,包括以下步骤:

步骤B1:数据管理层接收到数据应用层数据请求;

步骤B2:用户权限角色认证模块对用户角色和数据的访问权限进行认证;

步骤B3:数据库节点管理模块根据请求数据的基本信息确定访问的数据库节点信息;

步骤B4:数据请求调度模块查找空间数据缓存区,若发现缓存区没有所需数据,则发起数据请求;

步骤B5:数据统一访问接口模块通过数据库操作模块获取所需数据,存入到数据缓冲区中;

步骤B6:空间数据处理模块对数据进行运算与分析,将结果集存入到数据缓存区;

步骤B7:数据请求调度模块将数据结果集返回至上层应用,完成操作。

2.根据权利要求1所述的基于Oracle数据库的多源异构空间数据流转方法,其特征在于,步骤A5中,所述统一数据模型包括统一矢量数据存储结构和统一栅格数据存储结构。

3.根据权利要求2所述的基于Oracle数据库的多源异构空间数据流转方法,其特征在于,所述统一矢量数据存储结构包括基于BLOB对象存取方式的矢量数据存储结构和基于SDO_GEOMETRY对象存取方式的矢量数据存储结构。

4.根据权利要求3所述的基于Oracle数据库的多源异构空间数据流转方法,其特征在于,所述基于BLOB对象存取方式的矢量数据存储结构的关系表包括矢量元数据表、矢量空间索引表、矢量空间参考表和矢量空间数据表。

5.根据权利要求4所述的基于Oracle数据库的多源异构空间数据流转方法,其特征在于,所述基于SDO_GEOMETRY对象存取方式的矢量数据存储结构的关系表包括空间元数据表、空间坐标系统表、空间索引信息表、空间索引元数据表和矢量空间数据表。

6.根据权利要求2所述的基于Oracle数据库的多源异构空间数据流转方法,其特征在于,所述统一栅格数据存储结构包括:提取栅格数据元数据信息,生产栅格元数据信息表;按照波段对栅格数据进行抽取,并形成波段信息表;对每一波段进行分块,每一块作为一个Blob字段数据存储在栅格数据表中;选择重采样算法,生成影像金字塔,形成金字塔信息表;对生成的金子塔数据先按照波段分层,同一波段内再分块,生成金字塔数据表。

7.根据权利要求6所述的基于Oracle数据库的多源异构空间数据流转方法,其特征在于,所述统一栅格数据存储结构的关系表包括栅格信息表、波段信息表、金字塔信息表、栅格数据表、金字塔数据表。

8.根据权利要求5所述的基于Oracle数据库的多源异构空间数据流转方法,其特征在于,还包括基于统一矢量数据存储结构的矢量数据查询检索方法;

所述基于统一矢量数据存储结构的矢量数据查询检索方法,包括以下步骤:

步骤C1:对于基于BLOB对象存取方式的矢量数据存储结构的空间数据,建立空间索引后,能够直接对BLOB对象进行精确的空间查询;

步骤C2:对于基于SDO_GEOMETRY对象存取方式的矢量数据存储结构的空间数据,首先对矢量空间索引表或是建立的索引文件,对最小包围框进行空间查询,初步筛选出FID结果集;

步骤C3:根据初步筛选出的FID结果集,去数据库提取对应要素;

步骤C4:对提取的要素与空间过滤条件进行空间几何运算,进行几何关系的精确查询,得出满足空间过滤条件的最终结果。

9.根据权利要求7所述的基于Oracle数据库的多源异构空间数据流转方法,其特征在于,还包括基于统一栅格数据存储结构的栅格数据查询检索方法;

所述基于统一栅格数据存储结构的栅格数据查询检索方法,包括以下步骤:

步骤D1:根据栅格数据大小及栅格的地理范围,计算栅格数据的cell大小:

<mrow> <msub> <mi>cell</mi> <mi>x</mi> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>bbox</mi> <mrow> <mi>max</mi> <mi>x</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>bbox</mi> <mrow> <mi>min</mi> <mi>x</mi> </mrow> </msub> </mrow> <mrow> <msub> <mi>img</mi> <mi>x</mi> </msub> </mrow> </mfrac> <msub> <mi>cell</mi> <mi>y</mi> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>bbox</mi> <mrow> <mi>max</mi> <mi>y</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>bbox</mi> <mrow> <mi>min</mi> <mi>y</mi> </mrow> </msub> </mrow> <mrow> <msub> <mi>img</mi> <mi>y</mi> </msub> </mrow> </mfrac> <mo>;</mo> </mrow>

步骤D2:根据请求的地理坐标范围,计算当前请求栅格数据的大小:

<mrow> <msub> <mi>req</mi> <mi>x</mi> </msub> <mo>=</mo> <mo>&lsqb;</mo> <mfrac> <mrow> <mi>m</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <msub> <mi>bbox</mi> <mrow> <mi>max</mi> <mi>x</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>filter</mi> <mrow> <mi>max</mi> <mi>x</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mi>m</mi> <mi>a</mi> <mi>x</mi> <mrow> <mo>(</mo> <msub> <mi>bbox</mi> <mrow> <mi>min</mi> <mi>x</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>filter</mi> <mrow> <mi>min</mi> <mi>x</mi> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>cell</mi> <mi>x</mi> </msub> </mrow> </mfrac> <mo>+</mo> <mn>0.5</mn> <mo>&rsqb;</mo> </mrow>

<mrow> <msub> <mi>req</mi> <mi>y</mi> </msub> <mo>=</mo> <mo>&lsqb;</mo> <mfrac> <mrow> <mi>m</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <msub> <mi>bbox</mi> <mrow> <mi>max</mi> <mi>y</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>filter</mi> <mrow> <mi>max</mi> <mi>y</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mi>m</mi> <mi>a</mi> <mi>x</mi> <mrow> <mo>(</mo> <msub> <mi>bbox</mi> <mrow> <mi>min</mi> <mi>y</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>filter</mi> <mrow> <mi>min</mi> <mi>y</mi> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>cell</mi> <mi>y</mi> </msub> </mrow> </mfrac> <mo>+</mo> <mn>0.5</mn> <mo>&rsqb;</mo> </mrow>

其中,reqx、reqy分别表示请求的栅格数据的长度和宽度,filterminx、filtermaxx、filterminy、filtermaxy分别表示请求的地理范围的最小x坐标值、最大x坐标值、最小y坐标值、最大y坐标值,cellx、celly分别表示栅格数据一个像素点能够表示的地理坐标x维度的大小和y维度的大小;

步骤D3:计算当前视窗范围内的比例尺scale,找到与比例尺最近一级金字塔级别i:

<mrow> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>=</mo> <mfrac> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> <mrow> <mo>(</mo> <msub> <mi>win</mi> <mi>x</mi> </msub> <mo>-</mo> <msub> <mi>win</mi> <mi>y</mi> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> <mrow> <mo>(</mo> <msub> <mi>req</mi> <mi>x</mi> </msub> <mo>-</mo> <msub> <mi>req</mi> <mi>y</mi> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow>

<mrow> <msub> <mi>pyramid</mi> <mrow> <mi>m</mi> <mi>i</mi> <mi>n</mi> </mrow> </msub> <mo>=</mo> <munder> <mi>argmin</mi> <mrow> <msub> <mi>pyramid</mi> <mi>i</mi> </msub> <mo>&Element;</mo> <mi>S</mi> </mrow> </munder> <mo>{</mo> <mrow> <mo>|</mo> <mrow> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>-</mo> <msub> <mi>pyramid</mi> <mi>i</mi> </msub> </mrow> <mo>|</mo> </mrow> <mo>}</mo> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>0</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>l</mi> <mi>e</mi> <mi>v</mi> <mi>e</mi> <mi>l</mi> <mo>-</mo> <mn>1</mn> </mrow>

其中,scale是当前视窗比例尺,winx、winy分别为当前视窗的宽和高度,pyramidi为第i级金字塔的比例尺,S为各级金字塔比例尺集合,level为金字塔级别总数,pyramidmin为最接近scale的一级的金字塔的比例尺;

步骤D4:根据金字塔级别,查找该级金字塔在某一波段内块的位置:

其中,blockx、blocky分别表示栅格数据某一波段中切割块的长度和宽度,tileminx、tileminy、tilemaxx、tilemaxy分别为所请求的块号的最小行号、最小列号、最大行号、最大列号,reqminx、reqminy、reqmaxx、reqmaxy分别标识请求的地理范围的最小x坐标值、最小y坐标值、最大x坐标值、最大y坐标值,imgminx、imgminy分别表示栅格数据地理范围的最小x坐标值、最小y坐标值;

步骤D5:按照块号请求数据后,对栅格边界的块进行块内查找,得到最终查询的栅格数据实体。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1