MariaDB ST_CONTAINS() 函数的基础用法与实例

MariaDB ST_Contains() 函数用来检测一个几何图形是否完全包含另一个几何图形。如果第一个几何图形包含第二个几何图形,则返回真(1),否则返回假(0)。

发布于

MariaDB ST_Contains() 函数用来检测一个几何图形是否完全包含另一个几何图形。如果第一个几何图形包含第二个几何图形,则返回真(1),否则返回假(0)。

语法

MairaDB ST_Contains() 函数的语法如下:

ST_Contains(g1, g2)
  • g1: 外部几何图形,即可能包含其他几何图形的那一个。
  • g2: 内部几何图形,即可能被包含的那一个。

该函数会返回 1(真)或 0(假),表示 g1 是否包含 g2。

实例

检测一个多边形是否包含一个点

这个实例将展示如何检测一个多边形是否包含一个指定的点。

SET @p = ST_GeomFromText('POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))');
SELECT ST_Contains(@p, POINT(1, 1));

以下是该语句的输出:

+------------------------------+
| ST_Contains(@p, POINT(1, 1)) |
+------------------------------+
|                            1 |
+------------------------------+

输出为 1,表示该多边形确实包含点(1,1)。

检测一个多边形是否包含另一个多边形

这个实例将展示如何检测一个多边形是否包含另一个多边形。

SET @p1 = ST_GeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))');
SET @p2 = ST_GeomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))');

SELECT ST_Contains(@p1, @p2);

以下是该语句的输出:

1

输出为 1,表示第一个较大的多边形包含了第二个较小的多边形。

检测一条线是否包含在另一条线中

这个实例将展示如何检测一条线是否包含在另一条线中。

SET @ln1 = ST_GeomFromText('LINESTRING(0 0, 2 2)');
SET @ln2 = ST_GeomFromText('LINESTRING(1 1, 1.5 1.5)');

SELECT ST_Contains(@ln1, @ln2);

以下是该语句的输出:

+-------------------------+
| ST_Contains(@ln1, @ln2) |
+-------------------------+
|                       1 |
+-------------------------+

输出为 1,表示第一条线包含了第二条较短的线。

检测一个多线形是否包含在另一个多线形中

这个实例将展示如何检测一个多线形是否包含在另一个多线形中。

SET @ml1 = ST_GeomFromText('MULTILINESTRING((0 0, 2 2), (3 3, 5 5))');
SET @ml2 = ST_GeomFromText('MULTILINESTRING((1 1, 1.5 1.5))');

SELECT ST_Contains(@ml1, @ml2);

以下是该语句的输出:

+-------------------------+
| ST_Contains(@ml1, @ml2) |
+-------------------------+
|                       1 |
+-------------------------+

输出为 1,表示第一个多线形包含第二个多线形。

检测一个几何集合是否包含在另一个几何集合中

这个实例将展示如何检测一个几何集合是否包含在另一个几何集合中。

SET @gc1 = ST_GeomFromText('GEOMETRYCOLLECTION(POLYGON((0 0, 4 0, 4 4, 0 4, 0 0)))');
SET @gc2 = ST_GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POINT(1.5 1.5))');

SELECT ST_Contains(@gc1, @gc2);

以下是该语句的输出:

+-------------------------+
| ST_Contains(@gc1, @gc2) |
+-------------------------+
|                       1 |
+-------------------------+

输出为 1,表示第一个几何集合包含了第二个几何集合中的所有成员。

相关函数

以下是几个与 MairaDB ST_Contains() 相关的几个函数:

  • MariaDB ST_Crosses() 函数用来检测两个几何图形是否相交。
  • MariaDB ST_Disjoint() 函数用来检测两个几何图形是否不相交。
  • MariaDB ST_Intersects() 函数用来检测两个几何图形是否有交集。
  • MariaDB ST_Overlaps() 函数用来检测两个几何图形是否重叠。

结论

MariaDB ST_Contains() 函数提供了一种方便检测两个几何图形之间包含关系的方法。通过本文介绍的各种示例,您可以更好地理解和使用这个有用的函数。无论是点、线、面还是几何集合,都可以使用该函数进行包含关系的检测。在处理空间数据时,这个函数可以发挥重要作用。