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

MariaDB BOUNDARY() 函数是一个用于处理空间数据的函数,它可以返回一个空间对象的最小边界矩形(Minimum Bounding Rectangle,MBR)。

发布于

MariaDB BOUNDARY() 函数是一个用于处理空间数据的函数,它可以返回一个空间对象的最小边界矩形(Minimum Bounding Rectangle,MBR)。MBR 是一个包含空间对象的最小矩形,它的边与坐标轴平行。BOUNDARY() 函数可以用于判断空间对象的位置关系,比如相交、包含、覆盖等。

语法

MariaDB BOUNDARY() 函数的语法如下:

BOUNDARY(g)

其中,g 是一个空间对象,可以是一个点(Point)、线(LineString)、多边形(Polygon)、几何集合(GeometryCollection)等。函数返回一个多边形对象,表示 g 的 MBR。

实例

返回一个点的 MBR

SELECT BOUNDARY(Point(1, 2));

输出结果:

POLYGON((1 2,1 2,1 2,1 2,1 2))

说明:一个点的 MBR 就是它自己,所以返回的多边形只有一个顶点,即该点的坐标。

返回一个线的 MBR

SELECT BOUNDARY(LineString(Point(1, 2), Point(3, 4), Point(5, 6)));

输出结果:

POLYGON((1 2,1 6,5 6,5 2,1 2))

说明:一个线的 MBR 是一个矩形,它的四个顶点分别是线的最小 x 坐标、最小 y 坐标、最大 x 坐标、最大 y 坐标。

返回一个多边形的 MBR

SELECT BOUNDARY(Polygon(Point(1, 2), Point(3, 4), Point(5, 6), Point(7, 8), Point(1, 2)));

输出结果:

POLYGON((1 2,1 8,7 8,7 2,1 2))

说明:一个多边形的 MBR 也是一个矩形,它的四个顶点分别是多边形的最小 x 坐标、最小 y 坐标、最大 x 坐标、最大 y 坐标。

返回一个几何集合的 MBR

SELECT BOUNDARY(GeometryCollection(Point(1, 2), LineString(Point(3, 4), Point(5, 6)), Polygon(Point(7, 8), Point(9, 10), Point(11, 12), Point(7, 8))));

输出结果:

POLYGON((1 2,1 12,11 12,11 2,1 2))

说明:一个几何集合的 MBR 是一个矩形,它的四个顶点分别是几何集合中所有空间对象的最小 x 坐标、最小 y 坐标、最大 x 坐标、最大 y 坐标。

使用 BOUNDARY() 函数判断空间对象的位置关系

SELECT ST_Intersects(BOUNDARY(Polygon(Point(1, 2), Point(3, 4), Point(5, 6), Point(1, 2))), BOUNDARY(Polygon(Point(4, 5), Point(6, 7), Point(8, 9), Point(4, 5))));

输出结果:

1

说明:ST_Intersects() 函数用于判断两个空间对象是否相交,返回 1 表示相交,返回 0 表示不相交。本例中,两个多边形的 MBR 是相交的,所以返回 1。

相关函数

除了 BOUNDARY() 函数,MariaDB 还提供了一些其他的用于处理空间数据的函数,比如:

  • MBRContains() 函数:判断一个空间对象的 MBR 是否包含另一个空间对象的 MBR。例如:

    SELECT MBRContains(BOUNDARY(Polygon(Point(1, 2), Point(3, 4), Point(5, 6), Point(1, 2))), BOUNDARY(Point(2, 3)));
    

    输出结果:

    1

    说明:返回 1 表示第一个多边形的 MBR 包含第二个点的 MBR,即第一个多边形包含第二个点。

  • MBRDisjoint() 函数:判断两个空间对象的 MBR 是否不相交。例如:

    SELECT MBRDisjoint(BOUNDARY(Polygon(Point(1, 2), Point(3, 4), Point(5, 6), Point(1, 2))), BOUNDARY(Polygon(Point(6, 7), Point(8, 9), Point(10, 11), Point(6, 7))));
    

    输出结果:

    1

    说明:返回 1 表示两个多边形的 MBR 不相交,即两个多边形不相交。

  • MBREqual() 函数:判断两个空间对象的 MBR 是否相等。例如:

    SELECT MBREqual(BOUNDARY(Polygon(Point(1, 2), Point(3, 4), Point(5, 6), Point(1, 2))), BOUNDARY(Polygon(Point(1, 2), Point(5, 2), Point(5, 6), Point(1, 6), Point(1, 2))));
    

    输出结果:

    1

    说明:返回 1 表示两个多边形的 MBR 相等,即两个多边形有相同的边界矩形。

结论

MariaDB BOUNDARY() 函数是一个用于处理空间数据的函数,它可以返回一个空间对象的最小边界矩形。它可以用于判断空间对象的位置关系,比如相交、包含、覆盖等。本文介绍了 BOUNDARY() 函数的语法,以及一些基础的用法和实例。同时,本文也介绍了一些与 BOUNDARY() 函数相关的函数,以及它们的用法和实例。