发明名称 一种适用于全球数字高程模型和遥感影像数据快速空间索引的方法
摘要 本发明涉及利用椭球四叉树技术索引全球数字高程模型和遥感影像数据的方法。该方法根据地球的曲率对地球椭球表面进行四叉树网格划分,通过对椭球四叉树结点的虚拟化,分离了数据组织结构和数据存储结构,通过子树挂接方式,实现了海量全球数据的多级无缝集成。本发明能够克服现有现有空间索引技术的不足,提供一种高效、操作简单的全球空间数据的空间索引方法,在地理信息空间领域具有很好的应用价值。
申请公布号 CN102663028A 申请公布日期 2012.09.12
申请号 CN201210079116.X 申请日期 2012.03.23
申请人 北京师范大学 发明人 张立强;邓浩
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 代理人
主权项 1.一种适用于全球数字高程模型和遥感影像数据快速空间索引的步骤包括:步骤一:建立椭球四叉树椭球四叉树用椭球代替平面作为几何基准,该几何基准在椭球四叉树上建立索引结点,沿平行于子午圈和平行圈的方向,将地球椭球体的表面划分成许多四边形面片,作为处理和索引地理数据的索引结点,椭球四叉树每个结点描述了一定分辨率下确定的、等边长的四边形面片,在四叉树结构同一层中的面片具有相同的面积,其面积与地球上的实际面积相同,面片的面积为:<maths num="0001"><![CDATA[<math><mrow><mi>S</mi><mo>=</mo><msubsup><mo>&Integral;</mo><msub><mi>B</mi><mn>1</mn></msub><msub><mi>B</mi><mn>2</mn></msub></msubsup><msubsup><mo>&Integral;</mo><msub><mi>L</mi><mn>1</mn></msub><msub><mi>L</mi><mn>2</mn></msub></msubsup><mfrac><mrow><msup><mi>a</mi><mn>2</mn></msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>e</mi><mn>2</mn></msup><mo>)</mo></mrow><mi>cos</mi><mi>B</mi></mrow><msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>e</mi><mn>2</mn></msup><msup><mi>sin</mi><mn>2</mn></msup><mi>B</mi><mo>)</mo></mrow><mn>2</mn></msup></mfrac><mi>dBdL</mi><mo>=</mo><msup><mi>a</mi><mn>2</mn></msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>e</mi><mn>2</mn></msup><mo>)</mo></mrow><mi>&Delta;L</mi><mo>[</mo><mfrac><msub><mrow><mi>sin</mi><mi>B</mi></mrow><mn>2</mn></msub><mrow><mn>2</mn><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>e</mi><mn>2</mn></msup><msup><mi>sin</mi><mn>2</mn></msup><msub><mi>B</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths>(1)<maths num="0002"><![CDATA[<math><mrow><mo>+</mo><mfrac><mn>1</mn><mrow><mn>4</mn><mi>e</mi></mrow></mfrac><mi>log</mi><mfrac><mrow><mn>1</mn><mo>+</mo><msub><mrow><mi>e</mi><mi>sin</mi><mi>B</mi></mrow><mn>2</mn></msub></mrow><mrow><mn>1</mn><mo>-</mo><msub><mrow><mi>e</mi><mi>sin</mi><mi>B</mi></mrow><mn>2</mn></msub></mrow></mfrac><mfrac><msub><mrow><mi>sin</mi><mi>B</mi></mrow><mn>1</mn></msub><mrow><mn>2</mn><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>e</mi><mn>2</mn></msup><msup><mi>sin</mi><mn>2</mn></msup><msub><mi>B</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mfrac><mo>-</mo><mfrac><mn>1</mn><mrow><mn>4</mn><mi>e</mi></mrow></mfrac><mi>log</mi><mfrac><mrow><mn>1</mn><mo>+</mo><msub><mrow><mi>e</mi><mi>sin</mi><mi>B</mi></mrow><mn>1</mn></msub></mrow><msub><mrow><mn>1</mn><mo>-</mo><mi>e</mi><mi>sin</mi><mi>B</mi></mrow><mn>1</mn></msub></mfrac><mo>]</mo></mrow></math>]]></maths>方程(1)说明在经度差ΔL和纬度差ΔB都是常数的情况下,椭球四叉树网格的面积随着椭球表面位置的不同而变化,沿平行圈的大地线的长度公式的微分方程可以计算出经度差ΔL:ds=NcosB<sub>p</sub>dL                                        (2)因此等边面片的面积为:<maths num="0003"><![CDATA[<math><mrow><msub><mi>S</mi><mi>f</mi></msub><mo>=</mo><msup><mrow><mo>(</mo><mi>N</mi><mi>cos</mi><msub><mi>B</mi><mi>p</mi></msub><mi>dL</mi><mo>)</mo></mrow><mn>2</mn></msup><mover><mo>=</mo><mo>&CenterDot;</mo></mover><msup><mrow><mo>(</mo><msub><mrow><mi>N</mi><mi>cos</mi><mi>B</mi></mrow><mi>p</mi></msub><mi>&Delta;L</mi><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>索引关键字k可以表示为:k=int(L/ΔL)+int(S/S<sub>f</sub>)q<sub>L</sub>                           (4)<img file="FSA00000689336600015.GIF" wi="890" he="140" />其中,S是所有切片的面积,由方程(1)得到(此时,B<sub>1</sub>=-π/2,B<sub>2</sub>=π/2);B<sub>p</sub>是主纬度。在椭球四叉树适应细分模型中,高密度区域的椭球面尺寸比较小,而密度小的区域面片尺寸较大,并且只有四叉树的叶子含有数据,随着区域面积和位置的不同,这些数据的密度变化比较大,椭球四叉树静态模型中每一层存储数据的一个层次,树的任何结点都有可能含有数据,椭球面四叉树的细分利用四叉树分解实现,下一层中四边形的边长分别是上一层的1/2,方程(5)用来计算索引的基本层,若搜索四叉树能返回细分的索引值,依次就可以计算出所有细分的索引值。<maths num="0004"><![CDATA[<math><mrow><mi>k</mi><mo>=</mo><mi>int</mi><mrow><mo>(</mo><mi>L</mi><mo>/</mo><mi>&alpha;&Delta;L</mi><mo>)</mo></mrow><mo>+</mo><mi>int</mi><mrow><mo>(</mo><mi>S</mi><mo>/</mo><msub><mi>&beta;S</mi><mi>f</mi></msub><mo>)</mo></mrow><msub><mi>q</mi><mi>L</mi></msub><mi>&alpha;</mi><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mi>level</mi></munderover><msub><mi>k</mi><msub><mi>total</mi><mi>i</mi></msub></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,α=2<sup>level</sup>,β=4<sup>level</sup>,level=1,2,...,n;<img file="FSA00000689336600022.GIF" wi="86" he="57" />是第i层索引值的个数,S<sub>f</sub>是单个面片面积,经度差ΔL=L<sub>i+1</sub>-L<sub>i</sub>,平行于平行圈的切片总面积为S,q<sub>L</sub>是每一层面片的数目。利用牛顿方法解算公式(1)中椭球四叉树每个面片的最大纬度坐标B<sub>i</sub>和最小纬度坐标B<sub>i+1</sub>的值,就可计算从南极点到纬度B<sub>i</sub>的切片面积,牛顿方法是一种递归方法,对于方程f(x)=0,则<img file="FSA00000689336600023.GIF" wi="355" he="118" />令B<sub>1</sub>=-π/2,B2=B<sub>i</sub>,由方程(1)和(4)得:<maths num="0005"><![CDATA[<math><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>B</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><msup><mi>a</mi><mn>2</mn></msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>e</mi><mn>2</mn></msup><mo>)</mo></mrow><mi>&Delta;L</mi><mo>[</mo><mfrac><msub><mrow><mi>sin</mi><mi>B</mi></mrow><mn>2</mn></msub><mrow><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>e</mi><mn>2</mn></msup><msup><mi>sin</mi><mn>2</mn></msup><msub><mi>B</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths>(6)<maths num="0006"><![CDATA[<math><mrow><mo>+</mo><mfrac><mn>1</mn><mrow><mn>4</mn><mi>e</mi></mrow></mfrac><mi>log</mi><mfrac><mrow><mn>1</mn><mo>+</mo><msub><mrow><mi>e</mi><mi>sin</mi><mi>B</mi></mrow><mn>2</mn></msub></mrow><mrow><mn>1</mn><mo>-</mo><msub><mrow><mi>e</mi><mi>sin</mi><mi>B</mi></mrow><mn>2</mn></msub></mrow></mfrac><mfrac><mrow><mi>sin</mi><mrow><mo>(</mo><mo>-</mo><mi>&pi;</mi><mo>/</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mn>2</mn><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>e</mi><mn>2</mn></msup><msup><mi>sin</mi><mn>2</mn></msup><mrow><mo>(</mo><mo>-</mo><mi>&pi;</mi><mo>/</mo><mn>2</mn><mo>)</mo></mrow><mo>)</mo></mrow></mrow></mfrac><mo>-</mo><mfrac><mn>1</mn><mrow><mn>4</mn><mi>e</mi></mrow></mfrac><mi>log</mi><mfrac><mrow><mn>1</mn><mo>+</mo><mi>e</mi><mi>sin</mi><mrow><mo>(</mo><mo>-</mo><mi>&pi;</mi><mo>/</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mn>1</mn><mo>-</mo><mi>e</mi><mi>sin</mi><mrow><mo>(</mo><mo>-</mo><mi>&pi;</mi><mo>/</mo><mn>2</mn><mo>)</mo></mrow></mrow></mfrac><mo>]</mo><mo>-</mo><msub><mi>S</mi><mi>p</mi></msub></mrow></math>]]></maths>方程(6)中,S<sub>p</sub>是从南极点到纬度B<sub>i</sub>的切片面积,从南极点到纬度B<sub>i+1</sub>的切片面积为:<img file="FSA00000689336600027.GIF" wi="1549" he="145" />从南极点到纬度B<sub>i</sub>的切片面积为:<img file="FSA00000689336600028.GIF" wi="1556" he="146" />假设待分割的数字高程模型和影像大地坐标的范围为<img file="FSA00000689336600029.GIF" wi="216" he="48" />和<img file="FSA000006893366000210.GIF" wi="241" he="48" />行列数为M×N,每个瓦片有row×col格网点,那么瓦片在平行圈方向的数目为q<sub>λ</sub>=int(N/col),在子午圈方向的数目为<img file="FSA000006893366000211.GIF" wi="315" he="51" />经差为Δλ=(λ<sub>max</sub>-λ<sub>min</sub>)/q<sub>λ</sub>,纬差为<img file="FSA000006893366000212.GIF" wi="419" he="51" />由此在支持多分辨率的椭球四叉树中,第i层索引值为:<img file="FSA000006893366000213.GIF" wi="1570" he="127" />为了创建和搜索椭球四叉树,从已知索引值k中,计算当前层索引数据的最大坐标<img file="FSA000006893366000214.GIF" wi="144" he="49" />和最小坐标<img file="FSA000006893366000215.GIF" wi="159" he="49" />利用上述方程(9)和已知参数<img file="FSA000006893366000216.GIF" wi="57" he="39" />q<sub>λ</sub>,Δλ,<img file="FSA000006893366000217.GIF" wi="59" he="47" />获得λ<sub>1</sub>,<img file="FSA000006893366000218.GIF" wi="61" he="36" />λ<sub>2</sub>,<img file="FSA000006893366000219.GIF" wi="43" he="36" />的值:<img file="FSA000006893366000220.GIF" wi="1621" he="284" />步骤二:建立椭球四叉树的数据组织和索引空间数据通过挂载的方式附着到椭球四叉树上,由此建立起多级空间数据的金字塔模型,椭球四叉树具有两种类型的结点:●信息结点IQNode构成椭球四叉树的主干框架,但不包含具体的空间数据。●数据结点DQNode具体存储了空间数据,它通过注册的方式挂载到IQNode结点下,从而融入到椭球四叉树结构之中,形成多级海量空间数据的金字塔模型。IQNode主要的属性和方法如下:<img file="FSA00000689336600031.GIF" wi="340" he="406" />scale记录了当前IQNode下所挂载的数据的比例尺或分辨率。dataLocation记录了当前IQNode下所挂载的数据的存储路径。Load方法实现了空间数据向IQNode结点下的挂载方式,当有空间数据挂载到IQNode下时,IQNode结点调用Load方法将此空间数据的存储路径注册到IQNode结点中,当访问IQNode结点的数据时,它调用Visit方法来访问dataLocation路径下的空间数据。Unload方法实现了空间数据卸载方法,当IQNode下的空间数据不再需要时,IQNode调用Unload方法将其从IQNode中卸载,并将dataLocation属性初始化,从而从IQNode结点在无法访问空间数据。DQNode可以是一个数据结点,也可以是一棵集中式四叉树,为了使DQNode能够无缝地集成到椭球四叉树中,DQNode需要提供统一的数据格式和数据访问方法,如WMS、WFS等。
地址 100875 北京市海淀区新街口外大街19号科技处