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

MariaDB ST_Touches() 函数用来检测两个几何体是否相切。

发布于

MariaDB ST_Touches() 函数用来检测两个几何体是否相切。如果两个几何体有共同的点,但没有内部点相交,则认为它们相切。它常用于地理信息系统(GIS)应用程序中,用于处理和分析空间数据。

语法

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

ST_Touches(g1, g2)
  • g1:表示第一个几何体。
  • g2:表示第二个几何体。

函数返回一个布尔值。如果两个几何体相切,则返回 1;否则返回 0。

实例

检测两个点是否相切

本实例展示了如何使用 ST_Touches() 函数检测两个点是否相切。

SELECT ST_Touches(
  ST_GeomFromText('POINT(1 1)'),
  ST_GeomFromText('POINT(2 2)'))
AS touches;

以下是该语句的输出:

+---------+
| touches |
+---------+
|       0 |
+---------+

由于两个点没有共同的点,因此它们不相切。

检测一条线和一个点是否相切

本实例展示了如何使用 ST_Touches() 函数检测一条线和一个点是否相切。

SELECT ST_Touches(
  ST_GeomFromText('LINESTRING(0 0, 2 2)'),
  ST_GeomFromText('POINT(2 2)'))
AS touches;

以下是该语句的输出:

+---------+
| touches |
+---------+
|       1 |
+---------+

由于线的终点与点相同,因此它们相切。

检测两条线是否相切

本实例展示了如何使用 ST_Touches() 函数检测两条线是否相切。

SELECT ST_Touches(
  ST_GeomFromText('LINESTRING(0 0, 2 2)'),
  ST_GeomFromText('LINESTRING(2 2, 4 4)'))
AS touches;

以下是该语句的输出:

+---------+
| touches |
+---------+
|       1 |
+---------+

由于两条线在点 (2 2) 处相交,并且没有内部点相交,因此它们相切。

检测一个多边形和一条线是否相切

本实例展示了如何使用 ST_Touches() 函数检测一个多边形和一条线是否相切。

DROP TABLE IF EXISTS polygons;
CREATE TABLE polygons (id INT, poly POLYGON);
INSERT INTO polygons VALUES
  (1, ST_GeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))')),
  (2, ST_GeomFromText('POLYGON((2 2, 6 2, 6 6, 2 6, 2 2))'));

SELECT id, ST_Touches(poly, ST_GeomFromText('LINESTRING(1 1, 5 5)')) AS touches
FROM polygons;

以下是该语句的输出:

+------+---------+
| id   | touches |
+------+---------+
|    1 |       0 |
|    2 |       0 |
+------+---------+

在这个例子中,线与两个多边形都不相切。

当传入空值时的行为

当传入空值时,ST_Touches() 函数将返回 NULL。

SELECT ST_Touches(
  ST_GeomFromText('LINESTRING(0 0, 2 2)'),
  NULL)
AS touches;

以下是该语句的输出:

+---------+
| touches |
+---------+
|    NULL |
+---------+

相关函数

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

  • MariaDB ST_Crosses() 函数用来检测两个几何体是否相交。
  • MariaDB ST_DISJOINT() 函数用来检测两个几何体是否不相交。
  • MariaDB ST_Intersects() 函数用来检测两个几何体是否相交或相切。
  • MariaDB ST_Overlaps() 函数用来检测两个几何体是否重叠。

结论

MariaDB ST_Touches() 函数是地理信息系统(GIS)应用程序中一个非常有用的函数,它可以检测两个几何体是否相切。本文介绍了该函数的语法、用法实例以及相关函数。通过本文的学习,您应该能够熟练地使用 ST_Touches() 函数来处理和分析空间数据。