用户指南和参考

ST_Within

ST_Within 接受两个几何图形对象,若第一个对象完全在第二个对象之内,则返回 1 (TRUE);否则,它返回 0 (FALSE)。

语法

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

返回类型

整数

示例

在下面的示例中创建两个表。第一个表 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;

虽然第一次查询将提供占地形状在地块多边形之外的所有建筑物 ID 的列表, 但是它不能确定是否给其余 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; 


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]