ST_Intersection 接受两个几何图形对象并以几何图形对象形式返回交集。
语法
db2gse.ST_Intersection(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
返回类型
db2gse.ST_Geometry
示例
消防队长必须获取与可能的有害废物污染的半径相交的医院、学校和私人疗养院区域。
敏感区域存储在用以下 CREATE TABLE 语句创建的表 SENSITIVE_AREAS 中。 ZONE 列定义为存储每个敏感区域的轮廓的多边形。
CREATE TABLE SENSITIVE_AREAS (id integer, name varchar(128), size float, type varchar(10), zone db2gse.ST_Polygon);
危险地点存储在用以下 CREATE TABLE 语句创建的 HAZARDOUS_SITES 表中。 定义为点的 LOCATION 列存储每个危险地点的地理中心的位置。
CREATE TABLE HAZARDOUS_SITES (site_id integer, name varchar(128), location db2gse.ST_Point);
buffer 函数生成环绕有害废物地点位置的五英里缓冲区。 ST_Intersection 函数从缓冲的有害废物地点多边形和敏感区域的交集生成多边形。 ST_Area 函数返回交集多边形的面积,由 SUM 函数对每个危险地点求出该面积。 GROUP BY 子句指示查询按有害废物 site_ID 汇总相交的面积。
SELECT hs.name,SUM(db2gse.ST_Area(db2gse.ST_Intersection (sa.zone, db2gse.ST_buffer hs.location,(5 * 5280)))) FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs GROUP BY hs.site_id;
在图 35中, 圆表示有害废物地点周围的缓冲多边形。 这些缓冲多边形与敏感区域的交集产生其他三个多边形。 左上角的医院相交了两次,而右下角的学校只相交了一次。
图 35. 使用 ST_Intersection 确定每个建筑物中可能有多大面积受有害废物影响
![]() |