ST_WITHIN
📄字数 882
👁️阅读量 加载中...
功能描述
如果几何对象 A 完全包含在几何对象 B 内部(即 A 的所有点都在 B 的内部或边界上),并且 A 和 B 的内部至少有一个公共点,则返回 TRUE。
语法格式
sql
BOOLEAN ST_WITHIN(GEOMETRY geomA, GEOMETRY geomB);参数说明
- geomA:第一个目标 GEOMETRY 对象。
- geomB:第二个目标 GEOMETRY 对象。
函数返回类型
BOOLEAN 类型
使用说明
- A 在 B 中,当且仅当 A 的所有点都位于 B 的内部(包括边界),且 A 和 B 的内部至少有一个点重叠,则返回 TRUE。
- 源几何图形必须具有相同的坐标投影,并具有相同的 SRID。
- 数学术语:
ST_WITHIN(A, B) ⇔ (A ⋂ B = A) ∧ (Int(A) ⋂ Int(B) ≠ ∅)。 - 内部关系是自反的:每个几何体都在其自身之内。
- 该关系是反对称的:如果
ST_WITHIN(A,B) = TRUE且ST_WITHIN(B,A) = TRUE,则两个几何图形在拓扑上必须相等 (ST_EQUALS(A,B) = TRUE)。 - ST_Within 与 ST_Contains 相反。 因此,
ST_WITHIN(A,B) = ST_CONTAINS(B,A)。 - 此功能自动包括利用几何上可用的任何空间索引的边界框比较。
- 此函数支持 GEOMETRYCOLLECTION。
示例
sql
SQL> SELECT ST_WITHIN(smallc,smallc) As smallinsmall,
ST_WITHIN(smallc, bigc) As smallinbig,
ST_WITHIN(bigc,smallc) As biginsmall,
ST_WITHIN(ST_UNION(smallc, bigc), bigc) as unioninbig,
ST_WITHIN(bigc, ST_UNION(smallc, bigc)) as biginunion,
ST_EQUALS(bigc, ST_UNION(smallc, bigc)) as bigisunion
FROM
(
SELECT ST_BUFFER(ST_GEOMFROMTEXT('POINT(50 50)'), 20) As smallc,
ST_BUFFER(ST_GEOMFROMTEXT('POINT(50 50)'), 40) As bigc) As foo;
+--------------+------------+------------+------------+------------+------------+
| SMALLINSMALL | SMALLINBIG | BIGINSMALL | UNIONINBIG | BIGINUNION | BIGISUNION |
+--------------+------------+------------+------------+------------+------------+
| T | T | F | T | T | T |
+--------------+------------+------------+------------+------------+------------+
(1 row)