Documentation Home
MySQL 5.7 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 35.1Mb
PDF (A4) - 35.2Mb
Man Pages (TGZ) - 256.4Kb
Man Pages (Zip) - 361.2Kb
Info (Gzip) - 3.4Mb
Info (Zip) - 3.4Mb
Excerpts from this Manual

MySQL 5.7 Reference Manual  / ...  / Functions and Operators  / Spatial Analysis Functions  / Functions That Test Spatial Relations Between Geometry Objects  /  Spatial Relation Functions That Use Minimum Bounding Rectangles

12.16.9.2 Spatial Relation Functions That Use Minimum Bounding Rectangles

MySQL provides several MySQL-specific functions that test the relationship between minimum bounding rectangles (MBRs) of two geometriesg1 andg2. The return values 1 and 0 indicate true and false, respectively.

A corresponding set of MBR functions defined according to the OpenGIS specification is described later in this section.

  • MBRContains(g1,g2)

    Returns 1 or 0 to indicate whether the minimum bounding rectangle ofg1 contains the minimum bounding rectangle ofg2. This tests the opposite relationship asMBRWithin().

    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 |+----------------------+--------------------+

    MBRContains() andContains() are synonyms.

  • MBRCoveredBy(g1,g2)

    Returns 1 or 0 to indicate whether the minimum bounding rectangle ofg1 is covered by the minimum bounding rectangle ofg2. This tests the opposite relationship asMBRCovers().

    MBRCoveredBy() handles its arguments as follows:

    • If either argument isNULL or an empty geometry, the return value isNULL.

    • If either argument is not a syntactically well-formed geometry byte string, anER_GIS_INVALID_DATA error occurs.

    • Otherwise, the return value is non-NULL.

    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)

    Returns 1 or 0 to indicate whether the minimum bounding rectangle ofg1 covers the minimum bounding rectangle ofg2. This tests the opposite relationship asMBRCoveredBy(). See the description ofMBRCoveredBy() for examples.

    MBRCovers() handles its arguments as follows:

    • If either argument isNULL or an empty geometry, the return value isNULL.

    • If either argument is not a syntactically well-formed geometry byte string, anER_GIS_INVALID_DATA error occurs.

    • Otherwise, the return value is non-NULL.

  • MBRDisjoint(g1,g2)

    Returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometriesg1 andg2 are disjoint (do not intersect).

    MBRDisjoint() andDisjoint() are synonyms.

  • MBREqual(g1,g2)

    Returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometriesg1 andg2 are the same.

    MBREqual() is deprecated; expect it to be removed in a future MySQL release. UseMBREquals() instead.

  • MBREquals(g1,g2)

    Returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometriesg1 andg2 are the same.

    MBREquals(),MBREqual(), andEquals() are synonyms.

  • MBRIntersects(g1,g2)

    Returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometriesg1 andg2 intersect.

    MBRIntersects() andIntersects() are synonyms.

  • MBROverlaps(g1,g2)

    Two geometriesspatially overlap if they intersect and their intersection results in a geometry of the same dimension but not equal to either of the given geometries.

    This function returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometriesg1 andg2 overlap.

    MBROverlaps() andOverlaps() are synonyms.

  • MBRTouches(g1,g2)

    Two geometriesspatially touch if their interiors do not intersect, but the boundary of one of the geometries intersects either the boundary or the interior of the other.

    This function returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometriesg1 andg2 touch.

  • MBRWithin(g1,g2)

    Returns 1 or 0 to indicate whether the minimum bounding rectangle ofg1 is within the minimum bounding rectangle ofg2. This tests the opposite relationship asMBRContains().

    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 |+--------------------+--------------------+

    MBRWithin() andWithin() are synonyms.

The OpenGIS specification defines the following functions that test the relationship between two geometry valuesg1 andg2. The MySQL implementation uses minimum bounding rectangles, so these functions return the same result as the corresponding MBR-based functions described earlier in this section. The return values 1 and 0 indicate true and false, respectively.

These functions support all argument type combinations except those that are inapplicable according to the Open Geospatial Consortium specification.