ST_Contains 使用兩個幾何物件並傳回 1 (TRUE) (若第一個物件完全包含第二個物件);否則它會傳回 0 (FALSE)。
語法
db2gse.ST_Contains(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
回覆類型
Integer
範例
在下例中會建立兩個表格。一個表格含有一個都市的建築物覆蓋區,另一個表格含有它的用地。都市工程師想要確定全部建築物覆蓋區都在它們的用地內。
在這兩個表格中,多重多邊形資料類型儲存建築物覆蓋區和用地的幾何。 資料庫設計者為這兩個圖徵選取多重多邊形。設計者瞭解用地可以被自然地形 (如河流) 隔開,而且建築物覆蓋區通常可以由一些建築物組成。
CREATE TABLE BUILDINGFOOTPRINTS ( building_id integer, lot_id integer, footprint db2gse.ST_MultiPolygon); CREATE TABLE LOTS ( lot_id integer, lot db2gse.ST_MultiPolygon );
都市工程師首先選取一些不是完全位於一塊用地內的建築物。
SELECT building_id FROM BUILDINGFOOTPRINTS, LOTS WHERE db2gse.ST_Contains(lot,footprint) = 0;
都市工程師瞭解第一個查詢會傳回全部建築物 ID 的列示, 這些建築物 ID 有在用地多邊形以外的覆蓋區。 但是都市工程師也知道本資訊不會指出其它建築物是否有指定正確的用地 ID。 這個第二個查詢對 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_Contains(lot,footprint) = 1 AND LOTS.lot_id <> bf.lot_id;
在圖 30中,標示建築物 ID 的建築物覆蓋區位於自己的用地內。 以點虛線說明用地線。雖然沒有顯示,但是這些線條延伸到街道中心線, 而且完全包含用地和用地內的建築物覆蓋區。
圖 30. 使用 ST_Contains 確定全部建築物位於自己的用地內。
![]() |