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 查找不位于(相交)任何有害废物区域内的建筑物
![]() |