完成之前的所有准备工作之后,现在可以将注意力放在根据空间数据呈现地图上来。首先,需要添加一个层。一个层是具有共同类型的空间对象(及其非空间属性)的一个集合。例如,所有街道可以形成一个街道层。按照关系 DBMS,一个层对应于一个空间表,也就是有一个几何列和一些其他非几何列的表。表中的所有列都是具有那个表所表示的某种实体类型的实体。其他列中的值描述每个几何图形的属性(例如街道名称)。
可以通过菜单(Layer > Add Layers)或者单击工具条中的 Add Layers 图标在 ArcExplorer 中添加一个层。在新打开的 Catalog 窗口中,第一步是添加一个数据库连接。要连接的数据库必须在本地 DB2 (客户机)实例中编目。另外还必须指定一个用户名和密码。图 3 显示了这一步。
图 3. 设置 DB2 连接
上一步的结果是一个新的连接对象。对于要访问的每个数据库,只需设置一次连接。如果使用前面提到的联邦设置,那么只需要一个到联邦服务器,即 DB2 for Linux, UNIX, and Windows 的连接。可以立即为已有数据库连接添加新层。可以选择该连接,然后获得相关数据库中所有层(已注册的空间列)的列表。对于本场景,选择所有三个层,单击 Add Layers 图标,然后关闭 Catalog 窗口。图 4 演示了这一点。注意,DB2 for z/OS 中空间表的昵称还没有被添加,因此这里没有显示。
图 4. 添加层 layers
在主窗口的左面板上,现在可以选择要呈现的层,为那个层选择颜色和其他要使用的属性,缩小和放大,找到几何图形并获得相关的属性,以及根据当前选择的地图区域创建图像。还可以上下移动层(通过在左侧的概要图中右键单击层)。这将影响绘制层的顺序,以及哪些层显示在其他层之上。图 5 演示如何使用 Identify 图标显示关于一个选中的人口普查区域的信息。在使用 Identify 特性之前,必须在最左测面板上选中相关的层。
图 5. 获得几何图形的属性
相同的操作也可以在 DB2 for z/OS 子系统中的空间数据上执行。联邦设置会隐藏数据本身的来源。ArcExplorer 只与 DB2 for Linux, UNIX, and Windows 系统打交道。图 6 演示了选择并呈现层 ZIP_CODES_HOST 的结果。在功能上,层与 DB2 for Linux, UNIX, and Windows 数据库中存储的基本表没有区别。
图 6. 呈现 DB2 for z/OS 中的空间数据
对 ArcExplorer 的性能考虑
ArcExplorer 包含 Query Builder 特性。该特性允许根据不同的谓词过滤要显示的几何图形。图 7 展示了该特性,其中涉及所有 17 个人口普查区域,列 HOUSHO_29 包含值 6。
图 7. 使用 ArcExplorer 的 Query Builder 过滤几何图形
通过分析 CLI 跟踪可以发现,查询构建器中指定的谓词没有被下推到 DB2 中。ArcExplorer 将所有数据装载到主存中,并在那里应用所有过滤。虽然对于少量几何图形和少数几个表来说这样做已经足够了,但是对于较大的表,这样很快就会导致性能问题。因此,初次装载 ArcExplorer 项目时会导致较长的延时。
这种低效问题很容易在数据库级克服。为此,可以在 DB2 中定义一个视图,并注册那个视图的空间列。随后,使 ArcExplorer 知道该视图,并将其看作一个层。清单 6 总结了该设置。
清单 6. 在数据库级过滤
$ db2 CREATE VIEW census_blocks_6 AS \
SELECT blockgroup, population, househo_28, househo_29, per_capita, \
median_hou, median_fam, average__1, average__2, se_row_id, \
shape \
FROM census_blocks \
WHERE househo_29 = 6
DB20000I The SQL command completed successfully.
$ db2se register_spatial_column spatial -tableName CENSUS_BLOCKS_6 \
-columnName SHAPE -srsName NAD83_SRS_1
GSE0000I The operation was completed successfully. |
图 8. 在数据库级过滤几何图形
如果有些空间表根本不会用 ArcExplorer 来访问,那么就要考虑另一个性能问题。那些表中的空间列不应该注册。如果注册了那些空间列,那么 ArcExplorer 将在启动时或者要添加一个新层时访问和扫描那些表。这是为了提供可用数据的一致、完整的视图。通过注销那些表,可以避免上述扫描,因为 ArcExplorer 不再知道那些表的存在。
结束语
本文介绍了如何使用 ESRI ArcExplorer 来可视化用 DB2 Spatial Extender 或 Spatial Support for DB2 for z/OS 管理的空间数据。文中解释了如何将 shapefile 导入到不同的 DB2 系统中,并对其进行设置,使 ArcExplorer 可以访问该数据。然后演示对空间数据的访问,并介绍 ArcExplorer 的基本功能。最后一节讨论如何在数据库级应用过滤谓词,以提高查询性能和缩短响应时间。
关注此文的读者还看过: