Spatial 索引是使用包络生成的。 包络是几何图形自身且表示几何图形的最小和最大 X 和 Y 范围。 对于大多数几何图形,包络是一个框,但对于水平和垂直线条,包络是一个两点线条。 对于点,包络是点自身。有关包络的更多信息,参见包络。
通过为每个几何图形的包络与网格的交点生成一项或多项, 在 Spatial 列上构造 Spatial 索引。将交点记录为几何图形的内部 ID 和相交的网格单元的最小 X 和 Y坐标。 例如,图 7中的多边形与网格在坐标 (20,30)、(30,30)、(40,30)、(20,40)、(30,40)、(40,40)、(20,50)、(30,50) 和 (40,50) 处相交。 参见表 38以获取图 7中所有几何图形的最小 X 和 Y 坐标。
若存在多个网格级,DB2 Spatial Extender 尝试使用可能的最低网格级。 当某个几何图形在给定网格级与四个或四个以上网格单元相交时,会把该几何图形提升到下一个更高网格级。因此,对于具有 10.0e0、100.0e0 和 1000.0e0 三个网格级的 Spatial 索引, DB2 Spatial Extender 将首先使每个几何图形与 10.0e0 级网格相交。 若某个几何图形与四个或四个以上 10.0e0 网格单元相交,则会提升它并使它与 100.0e0 级网格相交。 若在 100.0e0 网格级产生了四个或四个以上的交点,则会把该几何图形提升到 1000.0e0 网格级。 在 1000.0e0 网格级,必须将交点输入 Spatial 索引,因为这是可能的最高网格级。
图 7说明四种不同类型的几何图形如何与 10.0e 相交。 将四种几何图形的所有 23 个交点记录在 Spatial 索引中。
![]() |
表 38列示几何图形及其对应的网格交点。
四种不同几何图形类型的包络与 10.0e 网格相交。
将与每个网格单元相交的最小 X 和 Y 坐标输入 Spatial 索引中。
几何图形 | 网格 X | 网格 Y |
---|---|---|
多边形
|
20.0
|
30.0
|
多边形
|
30.0
|
30.0
|
多边形
|
40.0
|
30.0
|
多边形
|
20.0
|
40.0
|
多边形
|
30.0
|
40.0
|
多边形
|
40.0
|
40.0
|
多边形
|
20.0
|
50.0
|
多边形
|
30.0
|
50.0
|
多边形
|
40.0
|
50.0
|
垂直线条
|
50.0
|
30.0
|
垂直线条
|
50.0
|
40.0
|
垂直线条
|
50.0
|
50.0
|
点
|
20.0
|
20.0
|
水平线条
|
20.0
|
20.0
|
水平线条
|
30.0
|
20.0
|
水平线条
|
40.0
|
20.0
|
水平线条
|
50.0
|
20.0
|
水平线条
|
60.0
|
20.0
|
水平线条
|
20.0
|
30.0
|
水平线条
|
30.0
|
30.0
|
水平线条
|
40.0
|
30.0
|
水平线条
|
50.0
|
30.0
|
水平线条
|
60.0
|
30.0
|
图 8显示如何通过增加网格级 30.0e0 和 60.0e0 将交点数显著减少至八个。 在此情况下,将标识为几何图形 1 的多边形提升到网格级 30.0e0, 将标识为几何图形 4 的线条提升到网格级 60.0e0。 这两个几何图形在 10.0e0 网格级分别有九个和十个交点,而在提升之后它们只有两个交点。
图 8. 添加网格级 30.0e0 和 60.0e0 的效果. 标识为几何图形 1 的多边形的包络与九个网格单元相交。 标识为几何图形 2 的垂直线条的包络与三个网格单元相交。 标识为几何图形 3 的点的包络只与一个网格单元相交。 标识为几何图形 4 的线条的包络与十个网格单元相交。
![]() |
DB2 Spatial Extender 采用 CREATE INDEX
语句中指定的网格级参数并检查每个 Spatial 对象,以确定对象所在的网格块的坐标和数目。在图 8中,
用递增的线宽和不同的灰度显示网格级 10.0e0、30.0e0 和 60.0e0。
将垂直线条和点包络单元交点输入
10.0e0 网格级的索引,因为这二者生成的交点都少于四个。
多边形与九个 10.0e0 网格单元相交,因此它被提升到 30.0e0 网格级。
在此网格级,多边形与两个网格单元相交,这两个网格单元被输入索引。
标识为几何图形 4 的线条与十个 10.0e0 网格单元相交,因此它被提升到
30.0e0 网格级。然而在此网格级,它与六个网格单元相交,
因此它再次被提升到 60.0e0 网格级,在此网格级它生成两个交点。然后线条
60.0e0 网格交点被输入索引。
若线条在此网格级生成四个或四个以上交点,仍会将这些交点输入索引,
因为这是可将几何图形提升到的最高网格级。
几何图形
|
网格 X
|
网格 Y
|
---|---|---|
网格级 1(10.0e0 网格大小)中垂直线条和点之间的交点 | ||
2
|
50.0
|
30.0
|
2
|
50.0
|
40.0
|
2
|
50.0
|
50.0
|
3
|
20.0
|
20.0
|
网格级 2(30.0e0 网格大小)中多边形的交点 | ||
1 | 0.0 | 30.0 |
1 | 30.0 | 30.0 |
网络级 3(60.0e0 网格大小)中线条的交点 | ||
4 | 0.0 | 0.0 |
4 | 60.0 | 0.0 |
DB2 Spatial Extender 实际上不会创建任何种类的多边形网格结构。DB2 Spatial Extender 通过将原点定义在列的 Spatial 参考系的 X,Y 偏移处以参数方式表示每个网格级。 它然后将网格扩展到正的坐标空间。 DB2 Spatial Extender 使用参数网格在数学上生成交点。