文档首页
MySQL 8.4 参考手册
相关文档 下载此手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  使用最小边界矩形的空间关系函数

14.16.9.2 使用最小边界矩形的空间关系函数

MySQL 提供了一些 MySQL 特定的函数,用于测试两个几何图形 g1g2 的最小边界矩形 (MBR) 之间的关系。返回值 1 和 0 分别表示真和假。

点的边界框被解释为一个点,它既是边界又是内部。

直线水平或垂直线的边界框被解释为一条线,其中线的内部也是边界。端点是边界点。

如果任何参数是几何集合,则这些参数的内部、边界和外部是集合中所有元素的并集的内部、边界和外部。

本节中的函数检测笛卡尔或地理空间参考系统 (SRS) 中的参数,并返回适合 SRS 的结果。

除非另有说明,否则本节中的函数按如下方式处理其几何参数

  • 如果任何参数为 NULL 或空几何图形,则返回值为 NULL

  • 如果任何几何参数不是语法上格式良好的几何图形,则会发生 ER_GIS_INVALID_DATA 错误。

  • 如果任何几何参数是未定义空间参考系统 (SRS) 中语法上格式良好的几何图形,则会发生 ER_SRS_NOT_FOUND 错误。

  • 对于接受多个几何参数的函数,如果这些参数不在同一个 SRS 中,则会发生 ER_GIS_DIFFERENT_SRIDS 错误。

  • 如果任何参数在几何上无效,则结果为真或假(结果未定义),或发生错误。

  • 对于地理 SRS 几何参数,如果任何参数的经度或纬度超出范围,则会发生错误

    显示的范围以度为单位。如果 SRS 使用其他单位,则范围使用其单位中的相应值。由于浮点运算,确切的范围限制会有所偏差。

  • 否则,返回值为非 NULL

以下 MBR 函数可用于测试几何关系

  • MBRContains(g1, g2)

    返回值 1 或 0,表示 g1 的最小边界矩形是否包含 g2 的最小边界矩形。这测试与 MBRWithin() 相反的关系。

    MBRContains() 处理其参数的方式如本节引言中所述。

    mysql> SET @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');
    mysql> SET @g2 = ST_GeomFromText('Point(1 1)');
    mysql> SELECT MBRContains(@g1,@g2), MBRWithin(@g2,@g1);
    +----------------------+--------------------+
    | MBRContains(@g1,@g2) | MBRWithin(@g2,@g1) |
    +----------------------+--------------------+
    |                    1 |                  1 |
    +----------------------+--------------------+
  • MBRCoveredBy(g1, g2)

    返回值 1 或 0,表示 g1 的最小边界矩形是否被 g2 的最小边界矩形覆盖。这测试与 MBRCovers() 相反的关系。

    MBRCoveredBy() 处理其参数的方式如本节引言中所述。

    mysql> SET @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');
    mysql> SET @g2 = ST_GeomFromText('Point(1 1)');
    mysql> SELECT MBRCovers(@g1,@g2), MBRCoveredby(@g1,@g2);
    +--------------------+-----------------------+
    | MBRCovers(@g1,@g2) | MBRCoveredby(@g1,@g2) |
    +--------------------+-----------------------+
    |                  1 |                     0 |
    +--------------------+-----------------------+
    mysql> SELECT MBRCovers(@g2,@g1), MBRCoveredby(@g2,@g1);
    +--------------------+-----------------------+
    | MBRCovers(@g2,@g1) | MBRCoveredby(@g2,@g1) |
    +--------------------+-----------------------+
    |                  0 |                     1 |
    +--------------------+-----------------------+
  • MBRCovers(g1, g2)

    返回值 1 或 0,表示 g1 的最小边界矩形是否覆盖 g2 的最小边界矩形。这测试与 MBRCoveredBy() 相反的关系。有关示例,请参阅 MBRCoveredBy() 的描述。

    MBRCovers() 处理其参数的方式如本节引言中所述。

  • MBRDisjoint(g1, g2)

    返回值 1 或 0,表示两个几何图形 g1g2 的最小边界矩形是否是不相交的(没有交点)。

    MBRDisjoint() 处理其参数的方式如本节引言中所述。

  • MBREquals(g1, g2)

    返回值 1 或 0,表示两个几何图形 g1g2 的最小边界矩形是否相同。

    MBREquals() 处理其参数的方式如本节引言中所述,但对于空几何参数不返回 NULL

  • MBRIntersects(g1, g2)

    返回值 1 或 0,表示两个几何图形 g1g2 的最小边界矩形是否相交。

    MBRIntersects() 处理其参数的方式如本节引言中所述。

  • MBROverlaps(g1, g2)

    两个几何图形 空间重叠 指它们相交,并且其交集结果为一个相同维度的几何图形,但不同于给定的两个几何图形。

    此函数返回 1 或 0 以指示两个几何图形 g1g2 的最小边界矩形是否重叠。

    MBROverlaps() 处理其参数的方式如本节引言中所述。

  • MBRTouches(g1, g2)

    两个几何图形 空间接触 指它们的内部不相交,但其中一个几何图形的边界与另一个几何图形的边界或内部相交。

    此函数返回 1 或 0 以指示两个几何图形 g1g2 的最小边界矩形是否接触。

    MBRTouches() 处理其参数的方式如本节引言中所述。

  • MBRWithin(g1, g2)

    返回 1 或 0 以指示 g1 的最小边界矩形是否在 g2 的最小边界矩形内。这测试了与 MBRContains() 相反的关系。

    MBRWithin() 处理其参数的方式如本节引言中所述。

    mysql> SET @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))');
    mysql> SET @g2 = ST_GeomFromText('Polygon((0 0,0 5,5 5,5 0,0 0))');
    mysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);
    +--------------------+--------------------+
    | MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) |
    +--------------------+--------------------+
    |                  1 |                  0 |
    +--------------------+--------------------+