Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Spatial Relation Functions That Use Minimum Bounding Rectangles

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 使用其他单位,范围将使用该单位对应的值。由于浮点算术的原因,exact range limits 略有偏差。

  • 否则,返回值不是 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,指示minimum bounding rectangle of g1 是否覆盖minimum bounding rectangle of g2。这测试了与MBRCoveredBy()相反的关系。请参阅MBRCoveredBy()的描述以获取示例。

    MBRCovers()按照本节引言中描述的方式处理其参数。

  • MBRDisjoint(g1, g2)

    返回1或0,指示minimum bounding rectangles of the two geometries g1g2 是否不相交(不相交)。

    MBRDisjoint()按照本节引言中描述的方式处理其参数。

  • MBREquals(g1, g2)

    返回1或0,指示minimum bounding rectangles of the two geometries g1g2 是否相同。

    MBREquals()按照本节引言中描述的方式处理其参数,除了它不返回 NULL 对于空几何参数。

  • MBRIntersects(g1, g2)

    返回1或0,指示minimum bounding rectangles of the two geometries g1g2 是否相交。

    MBRIntersects()按照本节引言中描述的方式处理其参数。

  • MBROverlaps(g1, g2)

    两个几何体 空间重叠 如果它们相交,并且它们的交集结果是一个相同维度但不等于任一给定几何体的几何体。

    该函数返回1或0,指示minimum bounding rectangles of the two geometries g1g2 是否重叠。

    MBROverlaps()按照本节引言中描述的方式处理其参数。

  • MBRTouches(g1, g2)

    两个几何体 空间接触 如果它们的内部不相交,但一个几何体的边界与另一个几何体的边界或内部相交。

    该函数返回1或0,指示minimum bounding rectangles of the two geometries g1g2 是否接触。

    MBRTouches()按照本节引言中描述的方式处理其参数。

  • MBRWithin(g1, g2)

    返回1或0,指示minimum bounding rectangle of g1 是否在minimum bounding rectangle of 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 |
    +--------------------+--------------------+