利用免费 geobrowser 来分析 DB2 空间数据

利用 IBM Data Management geobrowser for DB2 and Informix 来实现关系表数据的可视化

geobrowser for IBM® DB2® and Informix® 现在可以免费下载。可以很方便地列出包含空间数据的表,并可将表展示为由点、线、和多边形组成的图。颜色、符号、线条、以及底纹都是可选的。地图导航工具可实现放大和缩小,平移地图,选择和显示与每个图形象相关联的字母数字值。geobrowser 可以呈现利用 DB2 或 Informix 所得到的空间分析结果。例如,洪水区域内,用于识别客户的空间查询结果可被可视化。geobrowser 基于 IBM's ILOG® JViews Maps 的组件。应用程序开发人员可以利用这些组件来构建自定义空间可视化应用程序。本教程将详细介绍如何利用 geobrowser 来对 DB2 表数据进行可视化。

David Adler, 高级软件工程师, IBM China

David AdlerDavid Adler 已负责 IBM 空间数据库技术的开发工作 20 多年,最近 10 年当中主要从事 DB2 空间扩展程序开发工作。



2011 年 7 月 11 日

开始之前

最近 10 年当中,DB2 Spatial Extender 和 Informix Spatial DataBlade 已提供了映射与分析 DB2 和 Informix 关系表数据中空间数据的功能。表列中可定义点、线、多边形之类的空间类型,可表示如下对象:

  • 点位置 — 客户、零售商店、变压器、信号发射塔
  • 线 — 公路、海岸线、运输路线、电气传输线
  • 多边形 — 销售/服务地区、水灾/火灾风险、国家/省/县

SQL 查询可结合空间功能来分析空间关系,比如在洪水区域中查找客户。例如:

SELECT cust_name, cust_addr
FROM customers, flood zones
WHERE ST_Within(cust_loc, flood_loc) = 1

此查询的结果将产生一个客户的姓名和地址,其房屋可能遭遇洪水危险。这可用于计算保险费率或者购买洪水保险。

在很多情况下,通过可视化映射工具的结果,可以得到新的见解。本教程的后续部分将向您展示如何利用免费的 geobrowser 来对 DB2 表数据进行可视化。

图 1. 在洪水区域中通过红色来突出显示的 Kentucky 客户
在洪水区域中通过红色来突出显示的 Kentucky 客户的映射

关于本教程

本教程通过一个数据库示例来展示如何设置 DB2,如何设置 geobrowser,以及运行 geobrowser 来对空间表以及空间分析结果进行可视化。文中还提供了如何高效处理空间数据以及如何找到空间可视化技术相关资料的建议。

尽管本教程采用了 DB2 for Linux®,UNIX®, and Windows®,但是仅通过很少的改变,就能在 DB2 for z/OS® 或者 Informix 数据库中实现相同的操作。

先决条件

本教程针对空间应用程序开发人员以及数据库应用程序开发人员。读者应当熟悉空间数据以及 SQL 查询。

系统要求

要运行此示例,需要 Windows 或者 Linux 环境,并提供 500 MB 空间用于安装 DB2 与 geobrowser。如果已安装了 DB2,那么仅需要 20 MB 空间。


入门

概述

首先下载 DB2 的 Express-C 版本,以及 DB2 Spatial Extender for Windows or Linux,然后运行空间演示程序来创建一些包含空间数据的表。可下载 geobrowser 来查看这些表中的数据以及空间查询结果。见 下载 中的相关代码。

DB2 Information Center 包含 “空间与地理数据” 部分,其中提供了关于 DB2 Spatial Extender 安装与使用的信息。(见 参考资料)。

安装 DB2 并运行示例程序

下载并解压安装映像后,运行 setup.exe(Windows)或者 db2setup(Linux) for the DB2 server and for DB2 Spatial Extender。采用安装流程的默认选项即可。

在 Windows 环境中,需要在 DB2 命令窗口中执行如下命令,来修改数据库管理配置参数,增加代理堆栈的大小:

db2 update dbm cfg using agent_stack_sz 100
db2stop
db2start

在 Linux 中,需要在运行空间演示程序之前,通过如下命令设置 DB2PATH 环境变量,来指向 DB2 实例安装目录:

export DB2PATH=/home/db2inst1/sqllib

如果 DB2 实例不同,那么改变命令来指向正确位置。

在运行空间演示程序之前,需要创建数据库。最简便的方法是利用命令 db2sampl 来创建默认 DB2 示例数据库,然后再改变为空间示例目录:

cd /home/db2inst1/sqllib/extenders/samples/spatial (Linux)
or
cd c:\program files\IBM\sqllib\extenders\samples\spatial (Windows)

然后运行命令 runGseDemo sample userid password。这样数据库就能处理空间数据,创建空间表,以及执行空间查询并在临时窗口中显示结果。

安装 geobrowser

geobrowser 的安装很简单,只需将下载的文件解压到系统中正确的位置即可。可能需要依据批处理文件的相关信息对 geobrowser 批处理文件 — run_geobrowser.cmd(Windows)以及 run_geobrowser.sh(Linux)— 进行修改,来正确设置 Java™ 类路径。


使用 geobrowser

启动 geobrowser

通过进入其安装目录,并运行命令 run_geobrowser.cmd(Windows)或者 run_geobrowser.sh(Linux)来启动 geobrowser。geobrowser 最初会基于安装文件来展示世界地图。(截屏展示了基于教程格式需求的地图的一小块区域)。

使用 Help > Help Contents 来访问有关 JViews Map Viewer 示例应用程序的在线文档,geobrowser 正是基于此的。

图 2. geobrowser 启动时的初始画面
geobrowser 初始画面

展示空间表

使用 File > Add Map Data 来弹出用于选择增加到地图中的空间数据的对话框。默认选项是访问 DB2 for Linux, UNIX, and Windows。Files of Type 用于选择 Informix 数据库连接或者访问文件系统中 shapefile 格式的数据

填入适当的 DB2 连接信息。需要采用在安装过程中所使用的用户 ID 与密码,来运行 runGseDemo。如果是在安装 DB2 的操作系统中运行,那么主机名应当指定为 localhost。默认端口是 50000。单击 Connect,将会展示具有空间列的表的清单,具体如下。选择所有表并单击 Open

图 3. DB2 连接对话框
DB2 连接对话框

要放大最感兴趣的区域,在 Map Layers 选项卡展开按钮的左边单击,就可显示已加载表的清单。然后选择 REGIONS 表并单击工具栏中的 zoom layer tool 按钮,其结果如下。

图 4. Kentucky 的客户
Kentucky 的客户

工具栏中的其他按钮 tool bar 可用于放大/缩小移动、选择对象等等。当鼠标位于按钮上方时,弹出该按钮的描述。

改变符号

默认情况下,点对象的图标为绿色空心方形,而多边形具有蓝色边框。我们想要已红色实心菱形来重点显示洪水区域的客户,并将洪水区域多边形显示为红色。

可通过图层下面的 Dynamic Style Setting 面板来控制符号。选择一个图层,就可设置颜色、标签、标记符号、以及控制符号的大小。

想要突出显示洪水区域的客户,可在 Map Layers 选项卡中选择 HIGHRISKCUSTOMERS,然后单击 Point Color 旁边的颜色栏,并从调色板中选择红色。单击 Point Type 域,并选择 Filled Diamond。单击 Point Size 旁边的区域,并将 size 改为 4。单击 Labeling 旁边的区域,并选择 NAME

想要突出显示洪水区域多边形,需要选择 Map Layers 选项卡中的 FLOODZONES,然后单击 Line Color 旁边的颜色栏,并从调色板中选择红色。

为了区分办公区域,可选择 Map Layers 选项卡中的 OFFICES,然后单击 Point Color 旁边的颜色栏,并从调色板中选择蓝色。单击 Point Tytype 旁边的区域,并选择 Filled Square。单击 Point Size 旁边的区域,并将 size 改为 4。放大以后,将会看到类似下面的图。

图 5. 突出显示 Kentucky 洪水区域的客户
突出显示 Kentucky 洪水区域的客户

保存地图

有关地图的任何信息都可保存并在后续的会话当中恢复。使用 File > Save Map As 来弹出用于保存地图的对话框,如下图所示。

图 6. 保存地图文档
保存地图对话框

此对话框中提供以下选项:

仅保存主题
选择此选项,将会保存数据库连接信息,所选的层,以及相关的符号信息。当地图文档重新加载时,数据库表将被读取来恢复地图。如果没有选择此选项,有关地图的所有信息将会保存到文件中,这样恢复地图时不需要进行数据库连接。不选中此选项将会产生一个很大的文件。
保存为二进制
如果选择此选项,地图文档将以二进制形式存储。否则,将以可读的文本文件形式存储。

将地图保存后,以后可以重复使用。


空间分析

空间查询的使用

示例空间数据背景

在前面的部分中,已选择了所有由空间示例应用程序所创建的表与视图。现在需要讨论一下基础表,以及可以采取的有用操作。

以下地图层与 DB2 表直接对应:

  • CUSTOMERS— 点值与客户地址相对应
  • OFFICES— 点值与分支办公机构地址向对应
  • FLOODZONES— 多边形定义了高洪水风险的区域
  • REGIONS— 多边形代表 Kentucky 中的销售区域
  • HIGHRISKCUSTOMERS 实际上是具有如下定义的 DB2 视图:
                CREATE VIEW HIGHRISKCUSTOMERS (ID, NAME, ADDRESS, CITY, STATE, ZIP,
                                               INCOME, PREMIUM, CATEGORY, LOCATION)
                AS (SELECT C.ID, C.NAME, C.ADDRESS, C.CITY, C.STATE, C.ZIP,
                           C.INCOME, C.PREMIUM, C.CATEGORY, C.LOCATION
                FROM CUSTOMERS C, FLOODZONES F
                WHERE DB2GSE.ST_WITHIN(C.LOCATION, F.LOCATION) = 1)

该视图实现了空间连接,将 CUSTOMER 表中的行与 FLOODZONES 表中的相应行连接,其中位置位于洪水区域多边形中。见 参考资料 中 DB2 InfoCenter,其中包括有关所有空间函数的信息,可用于 WHERE 子句。

常见的空间函数包括:

  • ST_ContainsST_Within 的逆操作
  • ST_Intersects— 测试是否有一个空间值的一部分与其他值相交
  • ST_Touches— 测试是否有空间值与其他空间值接触,但不相交
  • ST_Distance— 测试两个空间值之间最近的距离值是否低于特定距离值

距离分析

我们可能感兴趣的另一个场景是,找到分公司范围之内的所有客户,以此将他们在地图中重点展示,并以相同的半径画一个圈。可执行如下 SQL 语句,来创建视图:

CREATE VIEW NEARCUSTOMERS (ID, NAME, ADDRESS, CITY, STATE, ZIP,
                               INCOME, PREMIUM, CATEGORY, LOCATION)
AS (SELECT C.ID, C.NAME, C.ADDRESS, C.CITY, C.STATE, C.ZIP,
           C.INCOME, C.PREMIUM, C.CATEGORY, C.LOCATION
FROM CUSTOMERS C, OFFICES O
WHERE DB2GSE.ST_DISTANCE(C.LOCATION, O.LOCATION,'STATUTE MILE') < 10.0)
CREATE VIEW OFFICE_CIRCLE (ID, CIRCLEPOLY)
AS (SELECT O.ID, 
    TREAT (DB2GSE.ST_BUFFER(O.LOCATION, 5.0, 'STATUTE MILE') AS db2gse.ST_Polygon)
FROM OFFICES O
    )

以上视图中的 TREAT 操作程序用于通知 DB2,ST_BUFFER 函数的结果将是一个多边形空间类型。否则,将认为结果是通用的 ST_Geometry 空间类型。

要查看 geobrowser 中的结果:

  1. 启动 geobrowser。如果已经启动,要退出并重启动,来确保已选取了新的空间视图。
  2. 使用 File > Open Prepared Map 对话框选择以前所保存的地图文档。
  3. 使用 File > Add Map Data 对话框连接到数据库,并选择 NEARCUSTOMERSOFFICE_CIRCLE
  4. HIGHRISKCUSTOMERSFLOODZONES 取消选定地图层。
  5. 选择 NEARCUSTOMERS,将颜色设置为黄色,将图标设置为实心方形,将大小设置为 4。
  6. 选择 OFFICE_CIRCLE,将颜色设置为黄色。

地图将变为如下的形式。

图 7. 图中对离分支办公室 5 英里之内的客户突出显示。
距离地图

权限与架构

以上操作假设以与最开始运行 runGseDemo 程序的用户相同的身份去连接数据库。这简化了 geobrowser 中的表访问,并创建了附加的数据库视图。

要查看由其他人创建的空间表,需要确保在 geobrowser 中发起连接的用户 ID 已具有对空间表进行 SELECT 操作的权限,因为 geobrowser 仅会列出有权限访问的表。

当创建视图时,除非另外指定,DB2 假定您已创建并拥有所引用的表。除非另有指定,想要引用由其他人创建的表,需要明确地为表名加上架构名做前缀 — 通常为创建者名称。还可以为正在生成的视图指定架构。在本例中,将视图表示为:

CREATE VIEW MYSCHEMA.NEARCUSTOMERS (ID, NAME, ADDRESS, CITY, STATE, ZIP,
                               INCOME, PREMIUM, CATEGORY, LOCATION)
AS (SELECT C.ID, C.NAME, C.ADDRESS, C.CITY, C.STATE, C.ZIP,
           C.INCOME, C.PREMIUM, C.CATEGORY, C.LOCATION
FROM DAVEA5.CUSTOMERS C, DAVEA5.OFFICES O
WHERE DB2GSE.ST_DISTANCE(C.LOCATION, O.LOCATION,'STATUTE MILE') < 10.0)

自定义应用程序可视化

构建自定义 JViews Maps 应用程序

本文采用的 geobrowser 应用程序基于 JViews Maps mapbuilder 示例应用程序。最大的区别是对有限数据资源类型(DB2、Informix、shapefile)的支持,以及对 Options > Refresh All 功能的支持。当其他应用程序可能修改表时,Refresh All 可用于从当前数据库表内容中重新加载图显示数据。

mapbuilder 示例是将很多 JViews Maps 组件集成到综合终端用户应用程序的 Java 应用程序。可通过对此进行修改,来增加所需的功能以及自定义的功能。或者可基于 JViews Maps 组件来从头开始构建应用程序。

下载 JViews Maps 试用版(见 参考资料)。想要部署自己的应用程序,需要获取一个 JViews Maps 常规许可。

具有 JViews Designer 的动态符号

JViews Maps 还包括 JViews Designer 组件,这能够提供比 JViews Maps 地图层图标更复杂、更具动态性的图标。能够基于属性值改变大小、颜色、或者图标。

在安装 JViews Maps 时,提供了开箱即用的示例 loaddiag,它会展示在美国地图上各类交通工具。它采用了 XML 数据源以及 Java 代码来模拟车辆运行。

可以使用 DB2 JDBC 数据源来连接 DB2 空间表。下图展示了一个基于前面部分所展示的数据库与数据的示例,其中每个公司用一个圆来代表,圆的大小由 OFFICES 表中 employees 数量而定。

图 8. 地图使用具有变量符号的 JViews Designer
图片展示了 JViews Designer 地图

下载 部分中展示了可实施的示例代码。将其解压到 JViews Maps samples 目录中。

示例代码解释

JViews 可视化应用程序的通常方式是最小化实际代码需求,并针对方法与内容采用可描述的方法。下面描述了每个相关的重要文件。

src\dw-demo1.java

这是个用于构建 GUI 的示例 Java AWT 应用程序,它在工具栏以及地图区域中采用了 JViews Maps 组件。dw-demo1.idpr 文件的加载开始了可视化流程。其代码很简单。

resources\data\dw-demo1.idpr

该文件指定了所要应用的风格、数据库连接信息、获取应用程序中所需列的查询、数据库列名到电子表格中所采用的相应名字的映射。

JViews 预计属性中所提供的位置信息中包含名字 latitudelongitude。这些值的推导要比平常复杂一些。JViews 以弧度表示坐标,而不采用常用的角度,因此需要表达式 * 3.14159 / 180.0 来将角度转变为弧度。

LOCATION 列中的坐标是利用在高精度地图应用程序中常用的 state-plane 坐标系统来存储的,其单位是英尺。可利用 DB2 Spatial Extender st_transform(1) 函数来将英尺转换为北美常用的度。

<diagrammer style="dw-demo1.css">
  <datasource class="ilog.views.diagrammer.datasource.IlvJDBCDataSource">
    <connection id="basic"
      url="jdbc:db2://localhost:50000/sample"
      user="davea5"
      passwd="my_password"
      driver="com.ibm.db2.jcc.DB2Driver"/>
    <query connection="basic"
      value="SELECT id, name, employees, 
             location..st_transform(1)..st_miny * 3.14159 / 180.0 as latitude, 
             location..st_transform(1)..st_minx * 3.14159 / 180.0 as longitude 
             FROM davea5.offices 
             where location is not null"
      tag="node"
      links="false">
<map columns="ID" property="id"/>
<map columns="LATITUDE" property="latitude"/>
<map columns="LONGITUDE" property="longitude"/>
<map columns="NAME" property="name"/>
<map columns="EMPLOYEES" property="employees"/>
   </query>
  </datasource>
</diagrammer>

resources\data\dw-demo1.css

该文件指定了所采用的背景地图,以及 dw-demo1.idpr 文件中查询所返回的节点的风格。Map 部分引用了所采用的特定地图,dw-demo1.ivl。

Map {
   _rule_name : "Background Map" ;
   autoRegionOfInterest : "true" ;
   map : "url(dw-demo1.ivl)" ;
   regionOfInterest : "" ;
   regionOfInterestMargin : "5.0" ;
}

需要将 dw-demo1.ivl 文件名替换为 geobrowser 中所创建的地图文件名。

node 部分, name : "@name" 指出, name 属性应当用于展示时具有符号的名字值。 class : "@|symbolResource(ilog/views/palettes/shared/symbols/SizedRound.css,Symbol)" 指明了所要采用的符号调色板以及特定符号: SizedRoundsize : "@employees" 指明 employees 属性应当用于控制符号的大小。

node {
   Layer : "20" ;
   Interactor : "ilog.views.sdm.IlvSDMCompositeInteractor" ;
   fill : "false" ;
   name : "@name" ;
   class : "@|symbolResource(ilog/views/palettes/shared/symbols/SizedRound.css,Symbol)" ;
   size : "@employees" ;
}

resources\data\dw-demo1.ivl

这是由 geobrowser 所生成的地图文件。应当将它替换为您所创建的文件。


结束语

此时您应该很清楚地知道如何利用空间谓词来访问 DB2 表从而像处理地图一样,来可视化空间列以及数据库查询结果中的内容。可利用数据库值来标识点、线、多边形,还可以对其采用不同颜色、符号、线形、以及线条粗细。可利用 Java 技术以及 JViews Maps 组件来构建自定义可视化应用程序。借助 JViews Designer,可创建具有复杂符号的应用程序,可以基于数据库值来调整其颜色、大小、以及图像。通过改变数据库连接参数,还可在 DB2 for z/OS 与 Informix 数据库中实现相同的功能。


下载

描述名字大小
DB2 and JViews Maps 示例源代码DB2JviewsMapsDemo.zip30KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management, WebSphere
ArticleID=715369
ArticleTitle=利用免费 geobrowser 来分析 DB2 空间数据
publish-date=07112011