用户指南和参考

构建 Spatial 查询

本节讨论如何构建利用 Spatial 函数和谓词的 Spatial 查询。

Spatial 函数与 SQL

DB2 Spatial Extender 包括对 Spatial 数据执行各种操作的函数。 本节中的示例显示如何使用 Spatial 函数来构建您自己的 Spatial 查询。

表 3提供了 Spatial 函数列表和他们能执行的操作类型。

表 3. Spatial 函数与操作
函数类型 操作示例
计算 计算两点间的距离
比较 查找洪泛区内的所有客户
数据交换 把数据转换为受支持的格式
转换 将 5 英里的半径添加到一个点中

有关 Spatial 函数的更多信息,参见几何图形和相关的 Spatial 函数用于 SQL 查询的 Spatial 函数

示例1:比较

下列查询查找客户与每个百货商店的平均距离。 在此示例中使用的 Spatial 函数为:ST_Distance 和 ST_Within。

SELECT s.id, AVG(db2gse.ST_Distance(c.location,s.location))
FROM customers c, stores s
WHERE db2gse.ST_Within(c.location,s.zone)=1
GROUP BY s.id

示例2:数据交换

下列查询查找那些驻住在圣弗朗西斯科海湾区的客户位置。 此示例中使用的 Spatial 函数为:ST_AsText(数据交换)和 ST_Within。ST_AsText 将 c.location 列中的 Spatial 数据转换成 OGC TEXT 格式。

SELECT db2gse.ST_AsText(c.location,cordref(1))
FROM customers c
WHERE db2gse.ST_Within(c.location,:BayArea)=1
 

示例 3:计算

下列查询查找长度超过 10.5 英里的所有街道。在此示例中所使用的 Spatial 函数为:ST_Length。

SELECT s.name,s.id
FROM street s
WHERE db2gse.ST_Length(s.path) > 10.5
 

示例 4:转换

此查询查找驻住在洪泛区或距其边界 2 英里内的客户。 在此示例中所使用的 Spatial 函数为: ST_Buffer(转换)和 ST_Within。

SELECT c.name,c.phoneNo,c.address
FROM customers c
WHERE db2gse.ST_Within(c.location,ST_Buffer(:floodzone,2))=1
 


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