ST_Overlaps ()函数返回T(TRUE) : 如果两个 ST_Geometry 对象的交集导致 ST_Geometry 对象具有相同维度但不等于任一源对象。
否则,它返回F(False)。
句法
ST_Overlaps(g1 ST_Geometry, g2 ST_Geometry)
用法
下图显示了重叠的各种几何对象。
图 1. 重叠的几何图形
通过将结果与表示 DE-9IM 可接受值的模式矩阵进行比较,可以理解或验证ST_Operlaps()函数的空间关系结果。如果对象的交集导致对象具有相同维度但不等于任一源对象(意思是两个geometry完全一模一样,返回False),则 ST_Operlaps() 函数返回TRUE 。
此模式矩阵适用于 ST_Polygon 和 ST_Polygon;ST_MultiPoint 和 ST_MultiPoint;ST_MultiPolygon 和 ST_MultiPolygon 重叠。对于这些组合,如果两个几何的内部与另一个的内部和外部相交,则ST_Overlaps()函数返回 TRUE。
| 内饰(二) | 边界 (b) | 外观(二) |
内饰(一) | T | * | T |
边界(一) | * | * | * |
外观(一) | T | * | * |
表 1. ST_Overlaps() 函数的模式矩阵 |
此模式矩阵适用于 ST_LineString 和 ST_LineString;并与 ST_MultiLineString 和 ST_MultiLineString 重叠。在这种情况下,几何的交集必须生成维度为 1 的几何(另一个 ST_LineString 或 ST_MultiLineString)。如果内部交集的维度为 0(一个点),则ST_Overlaps()函数将返回 FALSE;但是,ST_Crosses()函数将返回 TRUE。
| 内饰(二) | 边界 (b) | 外观(二) |
内饰(一) | 1个 | * | T |
边界(一) | * | * | * |
外观(一) | T | * | * |
返回类型
布尔值
例子
县主管需要一份 5 英里半径与敏感区域重叠的危险废物场清单。
sensitive_areas表包含几个描述受威胁机构的列以及存储机构 ST_Polygon 几何图形的zone列:
CREATE TABLE sensitive_areas (id integer,
name varchar(128),
size float,
type varchar(10),
zone ST_Polygon);
hazardous_sites表将站点标识存储在site_id和name列中。每个站点的实际地理位置存储在位置点列中:
CREATE TABLE hazardous_sites (site_id integer,
name varchar(40),
location ST_Point);
sensitive_areas和hazardous_sites表由ST_Overlaps()函数连接。它返回T(TRUE) 对于其区域多边形与hazardous_sites位置点缓冲的 5 英里半径重叠的所有sensitive_areas行:
SELECT hs.name hazardous_site, sa.name sensitive_area
FROM hazardous_sites hs, sensitive_areas sa
WHERE ST_Overlaps(ST_Buffer(hs.location,(26400)),sa.zone);
hazardous_site Landmark Industrial
sensitive_area Johnson County Hospital
hazardous_site Landmark Industrial
sensitive_area Summerhill Elementary School
下图显示,医院和学校重叠在县城两个危废场的5英里半径范围内。养老院没有。
图 2. 使用 ST_Overlaps() 函数
翻译至:BIM
供大家学习参考