SQL Server 2008 空间数据库 --- 空间索引概念及创建(取自帮助) (二)

2014-11-24 14:48:16 · 作者: · 浏览: 2
14.9-11。

WinFS Art Template2

clip_image004分割方案

空间索引的行为部分取决于“分割方案”。分割方案特定于数据类型。在 SQL Server 2008 中,空间索引支持两种分割方案:

· “几何图形网格分割”,这是适用于 geometry 数据类型的方案。

· 地理网格分割方案,该方案适用于数据类型为 geography 的列。

clip_image002[1]注意:

空间索引的 tessellation_scheme 设置显示在 sys.spatial_index_tessellations 目录视图中。

几何图形网格分割方案

几何图形网格分割是适用于 geometry 数据类型的默认分割方案。在 SQL Server 2008 中,它是唯一的此类分割方案。本部分讨论了与使用空间索引有关的几何图形网格分割的几个方面:支持的方法和边界框。

clip_image002[2]注意:

您可以使用 CREATE SPATIAL INDEX Transact-SQL 语句的 USING GEOMETRY_GRID 子句显式指定此分割方案。

支持的几何图形方法

空间索引旨在通过充当对象筛选器来减少将面向集合的方法应用于空间列的开销geometry 数据类型提供了一些内置的方法,以构造用于描述几何对象的 geometry 实例并使用这些实例。在某些条件下,空间索引支持多种面向集合的几何图形方法,如 STIntersects()STTouches()

有关由空间索引提供的几何图形方法支持的详细信息,请参阅空间索引支持的几何图形方法。

边界框

几何数据占有的平面可以是无限的。然而,在 SQL Server 2008 中,空间索引需要有限空间。为了建立有限空间以用于分解,几何图形网格分割方案需要矩形“边界框”。该边界框由四个坐标 (x-min,y-min)(x-max,y-max) 定义,这些坐标存储为空间索引的属性。这些坐标所表示的意义如下:

· x-min 是边界框左下角的 x 坐标。

· y-min 是左下角的 y 坐标。

· x-max 是右上角的 x 坐标。

· y-max 是右上角的 y 坐标。

clip_image002[3]注意:

这些坐标通过 CREATE SPATIAL INDEX Transact-SQL 语句的 BOUNDING_BOX 子句指定。

(x-min,y-min) 和 (x-max,y-max) 坐标确定边界框的位置和尺寸。边界框的外部空间视作一个编号为 0 的单元。

空间索引将分解边界框的内部空间。网格层次结构的第 1 级网格将填充边界框。若要在网格层次结构中放置几何对象,空间索引会将该对象的坐标与边界框的坐标进行比较。

下图显示了由边界框的 (x-min,y-min)(x-max,y-max) 坐标定义的点。网格层次结构的顶级显示为 4x4 网格。出于演示的目的,这里省略了较低级别。边界框的外部空间用零 (0) 指示。请注意,对象“A”部分超出了边界框,对象“B”完全位于边界框外部,即单元 0 中。

clip_image005

边界框与应用程序空间数据的某些部分相对应。索引的边界框是完全包含存储在空间列中的数据还是只包含其中部分数据取决于应用程序。只有针对完全位于边界框内部的对象的计算操作才会受益于空间索引。因此,若要获得 geometry 列的空间索引所能提供的最大优势,您需要指定一个包含所有或大多数对象的边界框。

clip_image002[4]注意:

空间索引的网格密度显示在 sys.spatial_index_tessellations 目录视图的 bounding_box_xmin、bounding_box_ymin、bounding_box_xmax 和 bounding_box_ymax 列中。

地理网格分割方案

此分割方案仅适用于 geography 列。此部分总结了地理网格分割支持的方法,并讨论了如何将测量空间投影到平面上,该平面随后将分解成网格层次结构。

clip_image002[5]注意:

您可以使用 CREATE SPATIAL INDEX Transact-SQL 语句的 USING GEOGRAPHY_GRID 子句显式指定此分割方案。

支持的地理方法

geography 数据类型提供了一些内置的方法,用来构造和操作描述地理对象的 geography“实例”。在某些条件下,空间索引支持以下面向集合的地理方法:STIntersects() STEquals()STDistance()geography 数据类型列上的空间索引会筛选对象,并降低将这些方法应用于空间数据的性能和查询开销。

有关由空间索引提供的地理方法支持的详细信息,请参阅空间索引支持的地域方法。

将测量空间投影到平面上

geography 实例(对象)的计算将包含对象的空间视作测量椭圆体。若要分解此空间,地理网格分割方案将椭圆体表面分为上半球和下半球,然后执行下列步骤:

1. 将每个半球投影在四边形棱锥图面上。

2. 将两个棱锥图平展开。

3. 联接平展的棱锥图以形成非欧几里得平面。

下图显示了此三步分解过程的示意图。在棱锥图中,虚线表示每个棱锥图的四个面的边界。步骤 1 和 2 显示测量椭圆体,使用一条绿色水平线表示赤道经线,使用一系列绿色垂直线表示若干条纬线。步骤 1 显示要投影在两个半球上的棱锥图。步骤 2 显示要平展的棱锥图。步骤 3 显示平展的棱锥图,这些棱锥图已组合起来形成一个平面,显示出许多投影的经线。请注意,这些投影线伸直后长度不一,具体取决于它们落在棱锥图上的位置。

clip_image006

空间投影到平面上之后,此平面将会分解成四级网格层次结构。不同级别可以使用不同的网格密度。下图显示了已分解成一个 4x4 的 1 级网格后的平面。出于演示目的,这里省略了网格层次结构的较低级别。事实上,此平面完全分解成了一个四级网格层次结构。分解过程完成后,将逐行从 geography 列读取地理数据,并为每个对象依次执行分割过程。

clip_image007

clip_image004[1]空间索引支持

可以仅对空间列创建空间索引。可以对支持空间索引的表的任何空间列创建空间索引,并可以对给定的空间列创建多个空间索引。有关对空间索引的限制的详细信息,请参阅对空间索引的限制。

建立一个空间索引

右键单击“索引”,再选择“新建索引”

2009-05-26_161115

“索引名称”字段中,输入索引的名称。

“索引类型”下拉列表中,选择“空间”

2009-05-26_161343

点击“添加”按钮,选择空间字段

2009-05-26_161409

当对 geometry 类型列创建索引时,必须指定边界框的 (X-min,Y-min)(X-max,Y-max) 坐标。对于 geography 类型列的索引,当您指定“地理网格”分割方案后,边界框字段变为只读状态,因为地理网格分割不使用边界框。

您还可以指定任意级别的分割方案的“每个对象的单元格数”字段和网格密度的非默认值。每个对象的单元格数的默认数字为 16,默认的网格密度为“中”

2009-05-26_162137

“边界框”为几何平面的顶级网格的周界。边界框参数仅存在于几何图形网格分割中。如果“分割方案”“地理网格”,这些参数呈灰色。

面板将显示边界框的X-minY-minX-maxY-max坐标。没有任何默认坐标值。因此,在对 geometry 类型列创建新的空间索引时,必须指定坐标值。

X 最小值

边界框左下角的 X 坐标。

Y 最小值

边界框左下角的 Y 坐标。

X 最大值

边界框右上角的 X 坐标。

Y 最大值

边界框右上角的 Y 坐标。