用户指南和参考

ST_Disjoint

ST_Disjoint 接受两个几何图形,若两个几何图形的交集为空,则返回 1 (TRUE);否则,它返回 0 (FALSE)。

语法

db2gse.ST_Disjoint(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)

返回类型

整数

示例

保险公司需要估计一个镇的医院、私人疗养院和学校的保险总额。 此过程的一部分包括确定有害废物地点对每个公共设施的威胁。 保险公司只想考虑没有污染危险的那些公共设施。 该保险公司雇用的 GIS 顾问已受命找出未在有害废物地点五英里半径内的所有公共设施。

除了包含 ZONE 列(用于存储公共设施的多边形几何图形)之外,SENSITIVE_AREAS 表还包含描述受威胁的公共设施的几列。

CREATE TABLE SENSITIVE_AREAS (id        integer,
                              name      varchar(128),
                              size      float,
                              type      varchar(10),
                              zone      db2gse.ST_Polygon);

HAZARDOUS_SITES 表将地点的标识存储在 SITE_ID 和 NAME 列中, 而将每个地点的实际地理位置存储在 LOCATION 列中。

CREATE TABLE HAZARDOUS_SITES (site_id   integer,
                              name      varchar(128),
                              location  db2gse.ST_Point);

下列 SELECT 语句列示未在有害废物地点五英里半径内的所有敏感区域的名称。 若 ST_Disjoint 函数的结果设置为等于 0 而不是 1,则 ST_Intersects 函数可在此查询中替换 ST_Disjoint 函数。这是因为 ST_Intersects 和 ST_Disjoint 返回正好相反的结果。

SELECT sa.name
FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs
WHERE db2gse.ST_Disjoint(db2gse.ST_Buffer(hs.location,(5 * 5280)),sa.zone) = 1;

图 32中, 将敏感区域地点与有害废物地点的五英里半径比较。 私人疗养院是 ST_Disjoint 函数将返回 1 (TRUE) 的唯一敏感区域。 无论何时两个几何图形不以任何方式相交,ST_Disjoint 函数就返回 1。

图 32. 使用 ST_Disjoint 查找不位于(相交)任何有害废物区域内的建筑物


顶部


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