ST_Crosses 接受两个几何图形对象,若它们的交集产生维数比源对象的最大维数少一的几何图形对象, 则返回 1 (TRUE)。交集对象包含两个源几何图形内部的点且不等于任一个源对象。 否则,它返回 0 (FALSE)。
语法
db2gse.ST_Crosses(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
返回类型
整数
示例
县政府正考虑一个新规章,规定县内所有有害废物存储设施不能在任何水道的五英里范围内。 县 GIS 管理员具有江河和溪流的准确表示,它们在 WATERWAYS 表中存储为多线条。 但 GIS 管理员只有每个有害废物存储设施的单个点位置。
CREATE TABLE WATERWAYS (id integer, name varchar(128), water db2gse.ST_MultiLineString); CREATE TABLE HAZARDOUS_SITES (site_id integer, name varchar(128), location db2gse.ST_Point);
要确定是否需要提醒县级管理人员注意违反建议的规章的设施,GIS 管理员应给危险地点位置设置缓冲区并检查是否有任何江河或溪流穿过缓冲多边形。 ST_Crosses 谓词将缓冲的 HAZARDOUS_SITES 与 WATERWAYS 进行比较。 因此,仅返回水道穿越该县建议的规定半径的那些记录。
SELECT ww.name "River or stream", hs.name "Hazardous site" FROM WATERWAYS ww, HAZARDOUS_SITES hs WHERE db2gse.ST_Crosses(db2gse.ST_Buffer(hs.location,(5 * 5280)),ww.water) = 1;
在图 31中, 有害废物地点的五英里缓冲区与流过该县的管理区的溪流网络交叉。 该溪流网络已定义为多线条。因此, 结果集包括与该半径交叉的所有线条段。
图 31. 使用 ST_Crosses 查找穿过有害废物区域的水道
![]() |