使用與參考手冊

ST_Within

ST_Within 使用兩個幾何物件並傳回 1 (TRUE) (若第二個物件包含第一個物件);否則會傳回 0 (FALSE)。

語法

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

回覆類型

Integer

範例

在下例中會建立兩個表格。第一個表格 BUILDINGFOOTPRINTS 含有都市的建築物覆蓋區。 第二個表格 LOTS 含有都市的用地。都市工程師想要確定全部建築物覆蓋區都在它們的用地內。

在這兩個表格中,多重多邊形資料類型儲存建築物覆蓋區和用地的幾何。 資料庫設計者為這兩個形狀選取多重多邊形,因為用地可以被自然地形 (如河流隔開),建築物覆蓋區通常可以由一些建築物組成。

CREATE TABLE BUILDINGFOOTPRINTS (   building_id integer,
                                    lot_id      integer,
                                    footprint   db2gse.ST_MultiPolygon);
CREATE TABLE LOTS (  lot_id integer, lot db2gse.ST_MultiPolygon );

使用下列 SELECT 陳述式時,都市工程師首先選取不完全位於一塊用地的建築物。

SELECT building_id
  FROM BUILDINGFOOTPRINTS, LOTS
 WHERE db2gse.ST_Within(footprint,lot) = 0;

雖然第一個查詢會提供覆蓋區在用地多邊形外面的全部 BUILDING_ID 列示, 但它不會判斷是否有將正確 lot_id 指定給其餘覆蓋區。 第二個 SELECT 陳述式則對 BUILDINGFOOTPRINTS 表格的 LOT_ID 直欄執行資料完整性檢查。

SELECT bf.building_id "building id",
       bf.lot_id "buildings lot_id",
       LOTS.lot_id "LOTS lot_id"
  FROM BUILDINGFOOTPRINTS bf, LOTS
 WHERE db2gse.ST_Within(footprint,lot) = 1 AND
       LOTS.lot_id <> bf.lot_id; 


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]