样本程序步骤
| 操作
| 说明
|
启用/禁用 Spatial 数据库
|
- 启用 Spatial 数据库 (gseEnableDB)
- 禁用 Spatial 数据库 (gseDisableDB)
- 启用 Spatial 数据库 (gseEnableDB)
|
- 这是使用 DB2 Spatial Extender 所需要的第一步。已对 Spatial 操作启用的数据库有一组 Spatial 类型、
一组 Spatial 函数、一组 Spatial 谓词、一种新的索引类型和一组管理表和视图。
- 当已对错误数据库启用 Spatial 能力时,通常执行此步骤。
当您禁用某个 Spatial 数据库时,就会除去一组 Spatial 类型、一组
Spatial 函数、一组 Spatial 谓词、一种新的索引类型和一组管理表和视图。
注意: | 若有创建的对象取决于由启用的数据库过程创建的对象,
则禁用数据库将失效。例如,用类型 ST_Point
的 Spatial 列创建的表会使禁用数据库失效。之所以会出现此情况,
是因为该表取决于类型 ST_Point,而类型 ST_Point 却是禁用数据库过程想要卸下的。
|
- 与 1 一样。
|
注册 Spatial 参考系
|
- 注册 CUSTOMERS 表的 LOCATION 列的 Spatial 参考系 (gseEnableSref)
- 注册 OFFICES 表的 LOCATION 列的 Spatial 参考系 (gseEnableSref)
- 注销 OFFICES 表的 LOCATION 列的 Spatial 参考系 (gseDisableSref)
- 重新注册 OFFICES 表的 ZONE 列的 Spatial 参考系 (gseEnableSref(
|
- 此步骤定义新的 Spatial 参考系 (SRS),
准备将其用来解释 CUSTOMERS 表的 Spatial 数据。Spatial 参考系包括某种格式的几何图形数据,
可以将几何图形数据以该格式存储在对 Spatial 操作启用的数据库的列中。 在将 SRS
注册到某一特定层后,可将适合于那一层的坐标存储在相关的 CUSTOMERS 表列中。
- 此步骤定义新的 Spatial 参考系 (SRS),
准备将其用来解释 OFFICES 层的 Spatial 数据。 必须为每一个表层定义一个 SRS。OFFICES
表层可能需要一个不同于 CUSTOMERS 表层的相关 SRS。
- 若给该层或 Spatial 列指定了错误的 SRS 参数,则执行此步骤。
当您注销 OFFICES 表层的 SRS 时,就会除去具有其相关参数的定义。
- 此步骤定义新的 Spatial 参考系 (SRS),
准备将其用来解释 OFFICES 层的 Spatial 数据。
|
创建 Spatial 表
|
- 通过添加 LOCATION 列改变 CUSTOMERS 表 (gseSetupTables)
- 创建 OFFICES 表 (gseSetupTables)
|
- CUSTOMERS 表表示在数据库中已经有存储了好几年的商业数据。
ALTER TABLE 语句添加类型为 ST_Point 的新列 (LOCATION)。
此列将在后续步骤中通过对地址列进行地理编码来填充。
- OFFICES 表表示:在其他数据中,保险公司的每一个办事处的销售范围。整个表将在后续步骤中用非 DB2 数据库的属性数据填充。
此步骤涉及从 SHAPE 文件中将属性数据调入至 OFFICES 表中。
|
注册 Spatial 层
|
- 将 CUSTOMERS 表中的 LOCATION 列注册为层 (gseRegisterLayer)
- 将 OFFICES 表的 ZONE 列注册为层 (gseRegisterLayer)
| 这些步骤将 LOCATION 列和 ZONE 列注册为
DB2 Spatial Extender 的层。在 DB2 Spatial Extender 实用程序(如地理编码器)可填充或存取 Spatial 列之前,需要先将其注册为层。
|
填充 Spatial 层
|
- 对 CUSTOMERS 表的 LOCATION 列的地址数据进行地理编码 (gseRunGC)
- 使用追加方式装入 OFFICES 表 (gseImportShape)
- 使用创建方式装入 HAZARD_ZONE 表 (gseImportShape)
|
- 此步骤通过调用地理编码器实用程序来执行批处理地理编码。
当需要对表的有效部分进行地理编码或重新进行地理编码时,通常执行批处理地理编码。
- 此步骤将以 SHAPE 文件的格式存在的 Spatial 数据装入
OFFICES 表。因为 OFFICES 表存在并且注册了 OFFICES/ZONE
层,所以装入实用程序将把新的记录追加到现存的表中。
- 此步骤将以 SHAPE 文件的格式存在的 Spatial 数据装入
HAZARD_ZONE 层。因为该表和层不存在,所以装入实用程序在装入数据之前会创建该表并注册该层。
|
启用 Spatial 索引
|
- 启用 CUSTOMERS 表的 LOCATION 列的 Spatial 索引 (gseEnableIdx)
- 启用 OFFICES 表的 ZONE 列的 Spatial 索引 (gseEnableIdx)
- 启用 OFFICES 表的 LOCATION 列的 Spatial 索引 (gseEnableIdx)
- 启用 HAZARD_ZONE 表的 BOUNDRY 列的 Spatial 索引 (gseEnableIdx)
| 这些步骤启用 CUSTOMERS、OFFICES
和 HAZARD_ZONE 表的 Spatial 索引。
|
启用自动地理编码
|
- 启用 CUSTOMERS 表的 LOCATION 和 ADDRESS 列的自动编码 (gseEnableAutoGC)
| 此步骤打开地理编码器的自动调用。
使用自动地理编码会使 CUSTOMERS 表的 LOCATION 和 ADDRESS
列相互同步,以便随后执行插入和更新操作。
|
插入/更新 CUSTOMERS 表
|
- 插入具有不同街道的某些记录 (gseInsDelUpd)
- 用新地址更新某些记录 (gseInsDelUpd)
| 这些步骤演示如何在 CUSTOMERS 表的 LOCATION
列上执行插入和更新操作。一旦启用自动地理编码,当在 LOCATION
列中插入或更新来自 ADDRESS 列中的信息时,会自动对该信息进行地理编码。在先前步骤中启用了此进程。
|
禁用自动地理编码
|
- 禁用 CUSTOMERS 层的自动地理编码 (gseDisableAutoGC)
- 禁用 CUSTOMERS 层的 Spatial 索引 (gseDisableIdxCustomersLayer)
| 在准备下一步骤(下一步骤包括对整个 CUSTOMERS 表的重新进行地理编码)
时,这些步骤禁用地理编码器和 Spatial 索引的自动调用。
若您正在装入大量的地理数据,建议您在装入数据之前禁用 Spatial 索引,
在完成装入之后再启用它。
|
对 CUSTOMERS 表重新进行地理编码
|
- 用较低的精度级 -90% 代替 100% 再次对 CUSTOMERS 层进行地理编码 (gseRunGC)
- 重新启用 CUSTOMERS 层的 Spatial 索引 (gseEnableIdx)
- 用较低的精度级 -90% 代替 100% 重新启用自动地理编码 (gseEnableAutoGC)
| 这些步骤再次以批处理的方式运行地理编码器,
用新精度级重新启用自动地理编码,并重新启用 Spatial 索引和自动地理编码。
当 Spatial 管理员发现地理编码过程中故障率较高时,建议执行此操作。
若将精度级设置为 100%,则对地址进行地理编码可能会失败,
因为在引用数据中找不到匹配的地址。
通过减小精度级,地理编码器就比较容易找到匹配数据。
以批处理的方式对表重新进行地理编码之后,
会再次启用自动地理编码和 Spatial 索引以便于对 Spatial 索引和 Spatial 列进行增量维护,
以便随后执行插入和更新操作。
|
创建视图并将其 Spatial 列注册为视图层
|
- 根据 CUSTOMERS 表与 HAZARD_ZONE 表的连接,
创建视图 HIGHRISK_CUSTOMERS (gseCreateView)
- 将视图的 Spatial 列注册为视图层 (gseRegisterLayer)
| 这些步骤创建视图并将其 Spatial 列注册为视图层。
|
执行 Spatial 分析
|
- 查找客户与每个办事处的平均距离 (ST_Within, ST_Distance)
- 查找每个办事处的客户平均收入和保险费 (ST_Within)
- 查找未被任何现存的办事处覆盖的客户 (ST_Within)
- 查找每个办事处与之重叠的危险区域数 (ST_Overlaps)
- 查找与特定客户位置最近的办事处,假设办事处位于办事处区域的质心 (ST_Distance,ST_Centriod)
- 查找其位置在一个特定的危险区域边界附近的客户 (ST_Buffer, ST_Overlaps)
- 查找那些被一特定的办事处覆盖的高危险客户
(所有步骤都利用 gseRunSpatialQueries)
| 这些步骤使用 DB2 SQL 语言中的 Spatial 谓词
和函数执行 Spatial 分析。可能时,DB2 查询优化器利用 Spatial 列上的 Spatial 索引
来提高查询性能。
|
将 Spatial 层调出到文件
| 调出 highRiskCustomers 层 (gseExportShape)
| 该步骤显示将查询结果调出到 SHAPE 文件的示例。
将查询结果调出到另一个文件格式允许第三方工具(例如 SRI ArcInfo)使用该信息。
|