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

MariaDB ST_INTERSECTION() 函数用来返回两个几何对象的交集。该

发布于

MariaDB ST_INTERSECTION() 函数用来返回两个几何对象的交集。该函数常用于空间分析和几何运算中。

语法

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

ST_INTERSECTION(g1, g2)
  • g1:必选参数,代表第一个几何对象。
  • g2:必选参数,代表第二个几何对象。

如果两个几何对象没有交集,则函数返回 GEOMETRYCOLLECTION EMPTY。。如果函数执行成功,它将返回一个表示两个几何对象交集的新几何对象。返回对象的类型取决于输入对象及其交集形状。

实例

求两个点对象的交集

此实例演示当两个点对象相同时,ST_INTERSECTION() 函数的返回值。

SET @pt1 = ST_GeomFromText('POINT(1 1)');
SET @pt2 = ST_GeomFromText('POINT(1 1)');
SELECT ST_AsText(ST_INTERSECTION(@pt1, @pt2));

以下是该语句的输出:

+----------------------------------------+
| ST_AsText(ST_INTERSECTION(@pt1, @pt2)) |
+----------------------------------------+
| POINT(1 1)                             |
+----------------------------------------+

求线和多边形的交集

此实例演示求一条线与一个多边形的交集。

SET @ln = ST_GeomFromText('LINESTRING(0 0, 4 4)');
SET @poly = ST_GeomFromText('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))');
SELECT ST_AsText(ST_INTERSECTION(@ln, @poly));

以下是该语句的输出:

+----------------------------------------+
| ST_AsText(ST_INTERSECTION(@ln, @poly)) |
+----------------------------------------+
| LINESTRING(1 1,3 3)                    |
+----------------------------------------+

求两个相交的多边形的交集

此实例演示求两个相交多边形的交集。

SET @poly1 = ST_GeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))');
SET @poly2 = ST_GeomFromText('POLYGON((2 2, 6 2, 6 6, 2 6, 2 2))');
SELECT ST_AsText(ST_INTERSECTION(@poly1, @poly2));

以下是该语句的输出:

+--------------------------------------------+
| ST_AsText(ST_INTERSECTION(@poly1, @poly2)) |
+--------------------------------------------+
| POLYGON((2 2,2 4,4 4,4 2,2 2))             |
+--------------------------------------------+

求两个不相交的多边形的交集

此实例演示当两个多边形不相交时,ST_INTERSECTION() 函数的返回 空。

SET @poly1 = ST_GeomFromText('POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))');
SET @poly2 = ST_GeomFromText('POLYGON((3 3, 5 3, 5 5, 3 5, 3 3))');
SELECT ST_AsText(ST_INTERSECTION(@poly1, @poly2));

以下是该语句的输出:

+--------------------------------------------+
| ST_AsText(ST_INTERSECTION(@poly1, @poly2)) |
+--------------------------------------------+
| GEOMETRYCOLLECTION EMPTY                   |
+--------------------------------------------+

求一个多边形和一个 GeometryCollection 对象的交集

此实例演示求一个多边形与一个 GeometryCollection 对象的交集。

SET @poly = ST_GeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))');
SET @gc = ST_GeomFromText('GEOMETRYCOLLECTION(POINT(2 2),LINESTRING(1 1, 3 3))');
SELECT ST_AsText(ST_INTERSECTION(@poly, @gc));

以下是该语句的输出:

+----------------------------------------+
| ST_AsText(ST_INTERSECTION(@poly, @gc)) |
+----------------------------------------+
| LINESTRING(1 1,3 3)                    |
+----------------------------------------+

相关函数

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

  • MariaDB ST_Union() 函数用来返回两个几何对象的并集。
  • MariaDB ST_Difference() 函数用来返回两个几何对象的差集。
  • MariaDB ST_SymDifference() 函数用来返回两个几何对象的对称差集。

结论

MariaDB ST_INTERSECTION() 函数是一个非常有用的函数,它允许我们计算两个几何对象的交集。通过本文的实例,我们更好地理解了如何使用这个函数,以及它的作用和用法。需要注意的是,在使用该函数时,需要确保输入的几何对象是有效的,否则可能会导致函数返回 NULL 或者出现错误。此外,该函数还可以与其他几何运算函数结合使用,以实现更加复杂的空间分析和计算。