ST_Disjoint 使用兩個幾何並傳回 1 (TRUE) (若這兩個幾何交點產生空集); 否則會傳回 0 (FALSE)。
語法
db2gse.ST_Disjoint(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
回覆類型
Integer
範例
保險公司需要評估鎮的醫院、療養院和學校的承保範圍。 包括判斷危險廢棄物場所對各個機構造成的威脅,也是本處理的一部份。 保險公司想要只考慮無污染風險的機構。 保險公司委託聘雇的 GIS 顧問尋找在危險廢棄物場所的 5 英哩半徑範圍以外的所有機構。
除了儲存機構的多邊形幾何的 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 陳述式列示在危險廢棄物場所的 5 英哩半徑範圍以外的全部敏感區域名稱。 ST_Intersects 函數可取代本查詢中的 ST_Disjoint 函數 (若此函數的結果集等於 0 而不是 1)。 這是因為 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中,敏感場所與危險廢棄物場所的 5 英哩半徑範圍做比較。 療養院是 ST_Disjoint 函數會傳回 1 (TRUE) 的唯一敏感區域。 每次有兩個幾何無法相交時,ST_Disjoint 函數就會傳回 1。
圖 32. 使用 ST_Disjoint 尋找不在 (相交) 危險廢棄物場所的建築物。
![]() |