本節說明如何利用空間函數及述詞來建置空間查詢。
DB2 Spatial Extender 包括對空間資料執行各種作業的函數。 本節範例說明如何使用空間函數來建置屬於您自己的空間查詢。
表 3提供空間函數及其所能執行的作業類型之列示。
函數類型 | 作業範例 |
---|---|
計算 | 計算兩點之間的距離 |
比較 | 尋找位於洪水區內的所有客戶 |
資料交換 | 將資料轉換成支援的格式 |
轉換 | 對某一點新增五英里半徑範圍 |
關於空間函數的詳細資訊,請參閱幾何與相關的空間函數和SQL 查詢的空間函數。
下列查詢搜尋各百貨公司與客戶之間的平均距離。本範例使用的空間函數為 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
下列查詢搜尋居住於舊金山海灣區的客戶位置。本範例使用的空間函數為 ST_AsText (資料交換) 和 ST_Within。ST_AsText 可將 c.location 直欄內的空間資料轉換成 OGC TEXT 格式。
SELECT db2gse.ST_AsText(c.location,cordref(1)) FROM customers c WHERE db2gse.ST_Within(c.location,:BayArea)=1
下列查詢搜尋超過 10.5 英里長的所有街道。本範例使用的空間函數為 ST_Length。
SELECT s.name,s.id FROM street s WHERE db2gse.ST_Length(s.path) > 10.5
此查詢搜尋居住於洪水區或洪水區邊界 2 英里內的客戶。 本範例使用的空間函數為 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