空间索引概述-空间位置切分方式

上传人:daj****de 文档编号:132787450 上传时间:2022-08-09 格式:DOCX 页数:12 大小:137.21KB
收藏 版权申诉 举报 下载
空间索引概述-空间位置切分方式_第1页
第1页 / 共12页
空间索引概述-空间位置切分方式_第2页
第2页 / 共12页
空间索引概述-空间位置切分方式_第3页
第3页 / 共12页
资源描述:

《空间索引概述-空间位置切分方式》由会员分享,可在线阅读,更多相关《空间索引概述-空间位置切分方式(12页珍藏版)》请在装配图网上搜索。

1、空间索引概述其他版本SQLServer支持空间数据和空间索引。空间索引”是一种扩展索引,允许您对空间列编制索 引。空间列是包含空间数据类型(如geometry或geography)的数据的表列。有关此发行版中新的空间功能的详细说明和示例(包括影响空间索引的功能), 请下载白皮书 SQL Server 2012 中的新空间功能。本主题内容 关于空间索引o 将索引空间分解成网格层次结构o 分割o 分割方案 空间索引支持的方法o 空间索引支持的几何图形方法o 空间索引支持的地域方法关于空间索引将索引空间分解成网格层次结构在SQLServer中,空间索引使用B树构建而成,也就是说,这些索引必须按B树的

2、线性顺 序表示二维空间数据。因此,将数据读入空间索引之前,SQLServer先实现对空间的分层均匀 分解。索引创建过程会将空间分解成一个四级网格层次结构”。这些级别指的是第1级” (顶级)、第2级”、第3级”和第4级”。 每个后续级别都会进一步分解其上一级,因此上一级别的每个单元都包含下一级别的整个网格。在给定级别上,所有网格沿两个轴都有相同数目的单元(例如4x4或8x8),并且单元 的大小都相同。下图显示了网格层次结构每个级别的右上角单元被分解成4x4网格的情况。事实上,所有单元 都是以这种方式分解的。因此,以此为例,将一个空间分解成四个级别的4x4网格实际上会总共产生65,536个第四级单

3、元。主要:针对空间索引进行的空间分解与应用程序数据使用的度量单位无关。网格层次结构的单元是利用多种Hilbert空间填充曲线以线性方式编号的。然而,出于演示目 的,这里使用的是简单的按行编号,而不是由Hilbert曲线实际产生的编号。在下图中,几个 表示建筑物的多边形和表示街道的线已经放进了一个4x4的1级网格中。第1级单元的编号为1到16,编号从左上角的单元开始。网格密度沿网格轴的单元数目确定了网格的密度”:单元数目越大,网格的密度越大。例如,8x8网 格(产生64个单元)的密度就大于4x4网格(产生16个单元)的密度。网格密度是以每 个级别为基础定义的。CREATESPATIALINDEX

4、 Transact-SQL语句支持GRIDS子句,使用该子句可以在不同级别指定不同的网格密度。可以使用下列关键字之一指定给定级别的网格密度。关键字网格配置单元数目LOW4X416MEDIUM8X864HIGH16X16256在SQLServer中,当数据库兼容级别设置为100或更低时,在所有级别上默认值为MEDIUM。当数据库兼容级别设置为110或更高时,默认值为自动网格方案。您可以通过指定非默认的网格密度控制分解过程。例如,在不同级别指定不同网格密度对于基于索弓I空间的大小和空间列中的对象来优化索引可能非常有用。注意:当数据库兼容级别设置为100或更低时,空间索引的网格密度显示在 sys.s

5、patial index tessellation目录视图的 level_1_grid level_2_grid level_3_grid和 level_4_grid列中。GEOMETRY_AUTO_GRID /GEOGRAPHY_AUTO_GRID 分割方案选项不填充这些 列。使用自动网格选项时,sys.spatial_index_tessellation目录视图对这 些列使用NULL值。分割将索引空间分解成网格层次结构后,空间索引将逐行读取空间列中的数据。读取空间对象(或实例)的数据后,空间索引将为该对象执行分割过程”。分割过程通过将对象与其接触的网 格单元集(接触单元”)相关联使该对象适

6、合网格层次结构。从网格层次结构的第1级开始, 分割过程以广度优先”方式对整个级别进行处理。在可能的情况下,此过程可以连续处理所 有四个级别,一次处理一个级别。分割过程的输出为对象的空间索引中所记录的接触单元集。通过引用这些已记录单元,空间索 引可以确定该对象在空间中相对于空间列中也存储在索引中的其他对象的位置。分割规则为了限制为对象记录的接触单元数,分割过程采用了几个分割规则。这些规则确定分割过程的 深度以及在索引中记录哪些接触单元。这些规则如下:覆盖规则如果一个对象完全盖住了某个单元,则称该单元由该对象所覆盖”。被覆盖的单元会 参与计数,但不进行分割。此规则应用于网格层次结构的所有级别。覆盖

7、规则简化了 分割过程,并减少了空间索引记录的数据量。 每对象单元数规则此规则强制执行每个对象的单元数限制”,该限制确定每个对象可以具有的最大单元 数(级别1例外)。在较低级别上,每个对象的单元数规则控制可以记录有关该对象 的信息量。最深单元规则最深单元规则通过只记录已为对象分割的最底部单元来生成该对象的最近似对象。父单 元不计入每对象单元数,这些单元不记录在索引中。这些分割规则依次逐步应用于每个网格级别。此部分的其余内容更详细地介绍了这些分割规则。覆盖规则如果一个对象完全盖住了某个单元,则称该单元由该对象所覆盖”。例如,在下图中,一个 第2级单元15.11完全由八边形的中间部分所覆盖。被覆盖的

8、单元会参与计数并记录在索引中,但不再进行分割。每对象单元数规则每个对象的分割程度主要取决于空间索引的每对象单元数限制”。此限制确定了对于每个对 象分割可以计数的最大单元数。然而,请注意,每对象单元数规则不对第1级强制执行,因此 可能超出此限制。如果第1级计数达到(或超出)每对象单元数限制,则在较低级别不再进行 分割。只要计数低于每对象单元数限制,分割过程就将继续。从编号最低的接触单元(例如上图中的 单元15.6)开始,此过程将测试每个单元以评估是对其进行计数还是进行分割。如果分割某单 元将超出每对象单元数限制,将对该单元进行计数而不进行分割。否则,将对该单元进行分割, 而对由对象接触的较低级别

9、的单元进行计数。分割过程将以这种方式在整个级别的广度范围内 继续进行。此过程对低级别网格的分割单元依次逐步进行重复,直至达到限制或不再有要计数 的单元为止。例如,上图显示了一个完全适合第1级网格的单元15的八边形。在此图中,单元15已进 行分割,将八边形分成了九个二级单元。此图假定每对象单元数限制为9或更大。然而,如果 每对象单元数限制为8或更小,则单元15将不进行分割,而只为该对象对单元15进行计数。 默认情况下,每对象单元数限制为每个对象16个单元,这将在大多数空间索引的空间和精度 之间提供一个令人满意的折中方案。然而,CREATESPATIALINDEX Transact-SQL语句支持

10、 CELLS_PER_OBJECT = n子句,使用该子句可以指定介于1和8192 (包含这两者)之间的每 对象单元数限制。注意:空间索引的cells per object设置显示在 sys.spatial index tessellation目录视图中。最深单元规则最深单元规则利用每个较低级别单元属于其上级单元这一事实:第4级单元属于第3级单元, 第3级单元属于第2级单元,第2级单元属于第1级单元。例如,属于单元1.1.1.1的对 象也属于单元1.1.1、1.1和1。这种单元层次结构关系的知识内置到查询处理器。因此,只 有最深级别的单元需要记录在索引中,从而最大限度地减少了索引需要存储的信息

11、。在下图中,相对较小的菱形多边形被分割。索引使用默认的每对象单元数限制16,此对象较小, 未达到该限制。因此,分割一直下至第4级。此多边形驻留在以下的第1级到第3级的单 元中:4、4.4以及4.4.10和4.4.14。然而,使用最深单元规则,分割将仅对十二个位于第4 级的单元进行计数:4.4.10.13-15 以及 4.4.14.1-3、4.4.14.5-7 和 4.4.14.9-11。单元格:14 4,141.-3、5-丁 以瓯甲元格:4 4.1Q 毒I分割方案 空间索引的行为部分取决于分割方案”。分割方案特定于数据类型。在SQLServer中,空 间索引支持两种分割方案:几何图形网格分割”

12、,这是适用于geometry数据类型的方案。地理网格分割”,该方案适用于数据类型为geography的列。注意:空间索引的tessellation_scheme设置显示在 sys.spatial index tessellation目录视图中。几何图形网格分割方案GEOMETRY_AUTO_GRID分割是SQLServer和更高版本的geometry数据类型的默认分 割方案。GEOMETRY_GRID分割是SQLServer中geometry数据类型的唯一可用分割方 案。本节讨论了与使用空间索引有关的几何图形网格分割的几个方面:支持的方法和边界框。 注意:您可以使用 CREATE SPATIA

13、L INDEXTransact-SQL语句的 USING (GEOMETRY_AUTO_GRID/GEOMETRY_GRID子 句显式指定此分割方案。边界框几何图形数据占有的平面可以是无限的。然而在SQLServer中,空间索引需要有限空间。为 了建立有限空间以用于分解,几何图形网格分割方案需要矩形边界框”。该边界框由四个坐 标(x-min,y-min)和(x-maxy-ma用定义,这些坐标存储为空间索引的属性。这些坐标所表 示的意义如下: x-min是边界框左下角的x坐标。 y-min是左下角的y坐标。 x-max是右上角的x坐标。 y-max是右上角的y坐标。注意:这些坐标通过CREATE

14、 SPATIAL INDEXTransact-SQL语句的BOUNDING BOX 子句才(x-min, y-min)和(x-may-maR坐标确定边界框的位置和尺寸。边界框的外部空间视作一 个编号为0的单元。空间索引将分解边界框的内部空间。网格层次结构的第1级网格将填充边界框。若要在网格 层次结构中放置几何对象,空间索引会将该对象的坐标与边界框的坐标进行比较。下图显示了由边界框的(x-mi几y-min)和(x-maxy-maX)坐标定义的点。网格层次结构的顶 级显示为4x4网格 出于演示的目的,这里省略了较低级别。边界框的外卜部空间用零(0)指 示。请注意,对象A”部分超出了边界框,对象B”

15、完全位于边界框外部,即单元0中。边界框与应用程序空间数据的某些部分相对应。索引的边界框是完全包含存储在空间列中的数 据还是只包含其中部分数据取决于应用程序。只有针对完全位于边界框内部的对象的计算操作 才会受益于空间索引。因此,若要获得geometry列的空间索引所能提供的最大优势,您需要 指定一个包含所有或大多数对象的边界框。注意:空间索引的网格密度显示sys.spatial index tessellations目录视 图的 bounding_box_xmin bounding_box_ymin bounding_box_xmax和 bounding box ymax 列中。地理网格分割方案

16、此分割方案仅适用于geography列。此部分总结了地理网格分割支持的方法,并讨论了如何 将测量空间投影到平面上,该平面随后将分解成网格层次结构。注意:您可以使用 CREATE SPATIAL INDEXTransact-SQL语句的 USING (GEOGRAPHY AUTO GRID/GEOGRAPHY GRID子句显式指定此分割方案。将测量空间投影到平面上对geography实例(对象)的计算将包含对象的空间视作测量椭圆体。若要分解此空间,地 理网格分割方案将椭圆体表面分为上半球和下半球,然后执行下列步骤:1. 将每个半球投影在四边形棱锥图面上。2. 将两个棱锥图平展开。3. 联接平展的

17、棱锥图以形成非欧几里得平面。下图显示了此三步分解过程的示意图。在棱锥图中,虚线表示每个棱锥图的四个面的边界。步 骤1和2显示测量椭圆体,使用一条绿色水平线表示赤道经线,使用一系列绿色垂直线表示 若干条纬线。步骤1显示要投影在两个半球上的棱锥图。步骤2显示要平展的棱锥图。步 骤3显示平展的棱锥图,这些棱锥图已组合起来形成一个平面,显示出许多投影的经线。请注 意,这些投影线伸直后长度不一,具体取决于它们落在棱锥图上的位置。空间投影到平面上之后,此平面将会分解成四级网格层次结构。不同级别可以使用不同的网格 密度。下图显示了已分解成一个4x4的1级网格后的平面。出于演示目的,这里省略了网格 层次结构的

18、较低级别。事实上,此平面完全分解成了一个四级网格层次结构。分解过程完成后, 将逐行从geography列读取地理数据,并为每个对象依次执行分割过程。(% I展的上半耳空间索引支持的方法空间索引支持的几何图形方法在特定条件下,空间索引支持以下面向集合的几何图形方法:STContainsO、STDistanceO、STEqualsO、STIntersectsO、STOverlaps()、STTouchesO 和 STWithin。若要使空间索引支持这些方法,必须在查询的WHERE或JOINON子句中使用这些方法,并且必须在采用如下常规形式的谓词中执行这些方法:geometry1method_nam

19、qgeometry2) comparison_operatorvalid_number若要返回非NULL结果,geometry1和geometry2必须具有相同的空间引用标识符(SRID)。否则,该方法将返回NULL。空间索引支持以下谓词形式: geometry1STContains(geometry2=1 geometry1STDistance(geometry2i number geometry1STDistance(geometry2=1 geometry1STWithin(geometry2i=1空间索引支持的地域方法在某些情况下,空间索引支持以下面向集合的地理方法:STInterse

20、ctsO、STEqualsO和STDistanceO。若要使空间索引支持这些方法,必须在查询的WHERE子句中使用这些方 法,并且必须在采用如下常规形式的谓词中执行这些方法。geography1method_namqgeography0 comparison_operatorvalid_number若要返回非NULL结果,geography1和geography2必须具有相同的空间引用标识符 (SRID)。否则,该方法将返回NULL。空间索引支持以下谓词形式: geography1STIntersects (geography2=1 geography1STEquals(geography2=

21、1 geography1STDistance(geography2 number geography1STDistance(geography2= number使用空间索引的查询仅WHERE子句中包含索引空间运算符的查询支持空间索引。示例语法如下:spatial object.SpatialMethod(reference spatial object) = | const literal or variable查询优化器了解空间操作的交换性(a.STIntersects(b) = b.STInterestcs(a)。但是,如果比较的开头不包含空间运算符,则系统不会使用空间索引(例如WHERE

22、 1 = spatial op将 不使用空间索引)。要使用空间索引,请重写比较(例如WHERE spatial op = 1)。与任何其他索引一样,在支持使用空间索引时,系统将根据开销选择是否使用空间索引,因此, 即使使用空间索引的所有要求都得到满足,查询优化器也可能不选用空间索引。可使用显示计划 查看是否使用了空间索引,在必要时,可提供查询提示以强制使用所需的查询计划。邻近点查询类型也支持空间索引,但必须要编写特定的查询语法。正确的语法为:SELECT TOP(K) WITH TIES *FROM AS T WITH(INDEX()WHERE .STDistance(reference_object) IS NOT NULLORDER BY .STDistance(reference_object);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!