类别:

地理空间函数

ST_WITHIN

如果第一个地理空间对象完全包含在第二个地理空间对象中,则返回 true。换言之:

  • 第一个 GEOGRAPHY 对象 g1 完全包含在第二个 GEOGRAPHY 对象 g2 中。

  • 第一个 GEOMETRY 对象 g1 完全包含在第二个 GEOMETRY 对象 g2 中。

调用 ST_WITHIN(g1, g2) 等同于调用 ST_CONTAINS(g2, g1)

尽管 ST_COVEREDBY 和 ST_WITHIN 可能看起来类似,但这两个函数有细微的区别。有关“被覆盖”和“在内部”之间差异的详细信息,请参阅 维度扩展的 9 交叉点模型 (DE-9IM) (link removed)。

备注

此函数不支持使用 GeometryCollection 或 FeatureCollection 作为输入值。

小技巧

您可以使用搜索优化服务,提高用于调用此函数的查询的性能。有关详细信息,请参阅 搜索优化服务

另请参阅:

ST_CONTAINSST_COVEREDBY

语法

ST_WITHIN( <geography_expression_1> , <geography_expression_2> )

ST_WITHIN( <geometry_expression_1> , <geometry_expression_2> )
Copy

实参

geography_expression_1

不是 GeometryCollection 或 GEOGRAPHY 的 FeatureCollection 对象。

geography_expression_2

不是 GeometryCollection 或 GEOGRAPHY 的 FeatureCollection 对象。

geometry_expression_1

不是 GeometryCollection 或 GEOMETRY 的 FeatureCollection 对象。

geometry_expression_2

不是 GeometryCollection 或 GEOMETRY 的 FeatureCollection 对象。

返回

BOOLEAN。

示例

GEOGRAPHY 示例

该示例展示了 ST_WITHIN 函数的简单用法:

create table geospatial_table_01 (g1 GEOGRAPHY, g2 GEOGRAPHY);
insert into geospatial_table_01 (g1, g2) values 
    ('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 'POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))');
Copy
SELECT ST_WITHIN(g1, g2) 
    FROM geospatial_table_01;
+-------------------+
| ST_WITHIN(G1, G2) |
|-------------------|
| False             |
+-------------------+
Copy
语言: 中文