用户指南和参考

样本程序步骤

表 5显示样本程序步骤、 相关存储过程和每一步骤的说明。用于调用存储过程的 C 函数显示在表 5的“操作”列中,并用圆括号内将它括起。 有关存储过程的更多信息,参见存储过程。 样本程序基于方案:保险公司更新它的 GIS中介绍的方案。

表 5. DB2 Spatial Extender 样本程序
样本程序步骤 操作 说明
启用/禁用 Spatial 数据库
  1. 启用 Spatial 数据库 (gseEnableDB)
  2. 禁用 Spatial 数据库 (gseDisableDB)
  3. 启用 Spatial 数据库 (gseEnableDB)

  1. 这是使用 DB2 Spatial Extender 所需要的第一步。已对 Spatial 操作启用的数据库有一组 Spatial 类型、 一组 Spatial 函数、一组 Spatial 谓词、一种新的索引类型和一组管理表和视图。
  2. 当已对错误数据库启用 Spatial 能力时,通常执行此步骤。 当您禁用某个 Spatial 数据库时,就会除去一组 Spatial 类型、一组 Spatial 函数、一组 Spatial 谓词、一种新的索引类型和一组管理表和视图。
    注意:若有创建的对象取决于由启用的数据库过程创建的对象, 则禁用数据库将失效。例如,用类型 ST_Point 的 Spatial 列创建的表会使禁用数据库失效。之所以会出现此情况, 是因为该表取决于类型 ST_Point,而类型 ST_Point 却是禁用数据库过程想要卸下的。
  3. 与 1 一样。
注册 Spatial 参考系
  1. 注册 CUSTOMERS 表的 LOCATION 列的 Spatial 参考系 (gseEnableSref)
  2. 注册 OFFICES 表的 LOCATION 列的 Spatial 参考系 (gseEnableSref)
  3. 注销 OFFICES 表的 LOCATION 列的 Spatial 参考系 (gseDisableSref)
  4. 重新注册 OFFICES 表的 ZONE 列的 Spatial 参考系 (gseEnableSref(

  1. 此步骤定义新的 Spatial 参考系 (SRS), 准备将其用来解释 CUSTOMERS 表的 Spatial 数据。Spatial 参考系包括某种格式的几何图形数据, 可以将几何图形数据以该格式存储在对 Spatial 操作启用的数据库的列中。 在将 SRS 注册到某一特定层后,可将适合于那一层的坐标存储在相关的 CUSTOMERS 表列中。
  2. 此步骤定义新的 Spatial 参考系 (SRS), 准备将其用来解释 OFFICES 层的 Spatial 数据。 必须为每一个表层定义一个 SRS。OFFICES 表层可能需要一个不同于 CUSTOMERS 表层的相关 SRS。
  3. 若给该层或 Spatial 列指定了错误的 SRS 参数,则执行此步骤。 当您注销 OFFICES 表层的 SRS 时,就会除去具有其相关参数的定义。
  4. 此步骤定义新的 Spatial 参考系 (SRS), 准备将其用来解释 OFFICES 层的 Spatial 数据。

创建 Spatial 表
  1. 通过添加 LOCATION 列改变 CUSTOMERS 表 (gseSetupTables)
  2. 创建 OFFICES 表 (gseSetupTables)

  1. CUSTOMERS 表表示在数据库中已经有存储了好几年的商业数据。 ALTER TABLE 语句添加类型为 ST_Point 的新列 (LOCATION)。 此列将在后续步骤中通过对地址列进行地理编码来填充。
  2. OFFICES 表表示:在其他数据中,保险公司的每一个办事处的销售范围。整个表将在后续步骤中用非 DB2 数据库的属性数据填充。 此步骤涉及从 SHAPE 文件中将属性数据调入至 OFFICES 表中。

注册 Spatial 层
  1. 将 CUSTOMERS 表中的 LOCATION 列注册为层 (gseRegisterLayer)
  2. 将 OFFICES 表的 ZONE 列注册为层 (gseRegisterLayer)

这些步骤将 LOCATION 列和 ZONE 列注册为 DB2 Spatial Extender 的层。在 DB2 Spatial Extender 实用程序(如地理编码器)可填充或存取 Spatial 列之前,需要先将其注册为层。
填充 Spatial 层
  1. 对 CUSTOMERS 表的 LOCATION 列的地址数据进行地理编码 (gseRunGC)
  2. 使用追加方式装入 OFFICES 表 (gseImportShape)
  3. 使用创建方式装入 HAZARD_ZONE 表 (gseImportShape)

  1. 此步骤通过调用地理编码器实用程序来执行批处理地理编码。 当需要对表的有效部分进行地理编码或重新进行地理编码时,通常执行批处理地理编码。
  2. 此步骤将以 SHAPE 文件的格式存在的 Spatial 数据装入 OFFICES 表。因为 OFFICES 表存在并且注册了 OFFICES/ZONE 层,所以装入实用程序将把新的记录追加到现存的表中。
  3. 此步骤将以 SHAPE 文件的格式存在的 Spatial 数据装入 HAZARD_ZONE 层。因为该表和层不存在,所以装入实用程序在装入数据之前会创建该表并注册该层。

启用 Spatial 索引
  1. 启用 CUSTOMERS 表的 LOCATION 列的 Spatial 索引 (gseEnableIdx)
  2. 启用 OFFICES 表的 ZONE 列的 Spatial 索引 (gseEnableIdx)
  3. 启用 OFFICES 表的 LOCATION 列的 Spatial 索引 (gseEnableIdx)
  4. 启用 HAZARD_ZONE 表的 BOUNDRY 列的 Spatial 索引 (gseEnableIdx)

这些步骤启用 CUSTOMERS、OFFICES 和 HAZARD_ZONE 表的 Spatial 索引。
启用自动地理编码
  1. 启用 CUSTOMERS 表的 LOCATION 和 ADDRESS 列的自动编码 (gseEnableAutoGC)

此步骤打开地理编码器的自动调用。 使用自动地理编码会使 CUSTOMERS 表的 LOCATION 和 ADDRESS 列相互同步,以便随后执行插入和更新操作。
插入/更新 CUSTOMERS 表
  1. 插入具有不同街道的某些记录 (gseInsDelUpd)
  2. 用新地址更新某些记录 (gseInsDelUpd)

这些步骤演示如何在 CUSTOMERS 表的 LOCATION 列上执行插入和更新操作。一旦启用自动地理编码,当在 LOCATION 列中插入或更新来自 ADDRESS 列中的信息时,会自动对该信息进行地理编码。在先前步骤中启用了此进程。
禁用自动地理编码
  1. 禁用 CUSTOMERS 层的自动地理编码 (gseDisableAutoGC)
  2. 禁用 CUSTOMERS 层的 Spatial 索引 (gseDisableIdxCustomersLayer)

在准备下一步骤(下一步骤包括对整个 CUSTOMERS 表的重新进行地理编码) 时,这些步骤禁用地理编码器和 Spatial 索引的自动调用。 若您正在装入大量的地理数据,建议您在装入数据之前禁用 Spatial 索引, 在完成装入之后再启用它。
对 CUSTOMERS 表重新进行地理编码
  1. 用较低的精度级 -90% 代替 100% 再次对 CUSTOMERS 层进行地理编码 (gseRunGC)
  2. 重新启用 CUSTOMERS 层的 Spatial 索引 (gseEnableIdx)
  3. 用较低的精度级 -90% 代替 100% 重新启用自动地理编码 (gseEnableAutoGC)

这些步骤再次以批处理的方式运行地理编码器, 用新精度级重新启用自动地理编码,并重新启用 Spatial 索引和自动地理编码。 当 Spatial 管理员发现地理编码过程中故障率较高时,建议执行此操作。 若将精度级设置为 100%,则对地址进行地理编码可能会失败, 因为在引用数据中找不到匹配的地址。 通过减小精度级,地理编码器就比较容易找到匹配数据。 以批处理的方式对表重新进行地理编码之后, 会再次启用自动地理编码和 Spatial 索引以便于对 Spatial 索引和 Spatial 列进行增量维护, 以便随后执行插入和更新操作。
创建视图并将其 Spatial 列注册为视图层
  1. 根据 CUSTOMERS 表与 HAZARD_ZONE 表的连接, 创建视图 HIGHRISK_CUSTOMERS (gseCreateView)
  2. 将视图的 Spatial 列注册为视图层 (gseRegisterLayer)

这些步骤创建视图并将其 Spatial 列注册为视图层。
执行 Spatial 分析
  1. 查找客户与每个办事处的平均距离 (ST_Within, ST_Distance)
  2. 查找每个办事处的客户平均收入和保险费 (ST_Within)
  3. 查找未被任何现存的办事处覆盖的客户 (ST_Within)
  4. 查找每个办事处与之重叠的危险区域数 (ST_Overlaps)
  5. 查找与特定客户位置最近的办事处,假设办事处位于办事处区域的质心 (ST_Distance,ST_Centriod)
  6. 查找其位置在一个特定的危险区域边界附近的客户 (ST_Buffer, ST_Overlaps)
  7. 查找那些被一特定的办事处覆盖的高危险客户
(所有步骤都利用 gseRunSpatialQueries)
这些步骤使用 DB2 SQL 语言中的 Spatial 谓词 和函数执行 Spatial 分析。可能时,DB2 查询优化器利用 Spatial 列上的 Spatial 索引 来提高查询性能。
将 Spatial 层调出到文件 调出 highRiskCustomers 层 (gseExportShape) 该步骤显示将查询结果调出到 SHAPE 文件的示例。 将查询结果调出到另一个文件格式允许第三方工具(例如 SRI ArcInfo)使用该信息。


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]