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

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

本节稍后将描述根据 OpenGIS 规范定义的一组相应的 MBR 功能。

MBRContains(g1, g2)

返回 1 或 0 以指示* g1 的最小边界矩形是否包含 g2 *的最小边界矩形。这将测试相反的关系为MBRWithin()

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()Contains()是同义词。

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 以指示两个几何* g1 g2 *的最小边界矩形是否不相交(不相交)。

MBRDisjoint()Disjoint()是同义词。

MBREqual(g1, g2)

返回 1 或 0 以指示两个几何* g1 g2 *的最小边界矩形是否相同。

MBREqual()已过时,将在以后的 MySQL 版本中删除。请改用MBREquals()

MBREquals(g1, g2)

返回 1 或 0 以指示两个几何* g1 g2 *的最小边界矩形是否相同。

MBREquals()MBREqual()Equals()是同义词。

MBRIntersects(g1, g2)

返回 1 或 0 以指示两个几何* g1 g2 *的最小边界矩形是否相交。

MBRIntersects()Intersects()是同义词。

MBROverlaps(g1, g2)

如果两个几何形状相交且“相交”,并且它们的相交会产生相同尺寸但不等于任何给定几何形状的几何形状,则“在空间上重叠”。

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

MBROverlaps()Overlaps()是同义词。

MBRTouches(g1, g2)

如果两个几何的内部不相交,则“在空间上接触”,但是其中一个几何的边界与另一个的边界或内部相交。

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

MBRWithin(g1, g2)

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

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()Within()是同义词。

OpenGIS 规范定义了以下功能,用于测试两个几何值g1g2之间的关系。 MySQL 实现使用最小边界矩形,因此这些函数返回的结果与本节前面介绍的基于 MBR 的相应函数相同。返回值 1 和 0 分别 table 示 true 和 false。

这些函数支持所有参数类型组合,但根据 Open Geospatial Consortium 规范不适用的除外。

Contains(g1, g2)

MBRContains()Contains()是同义词。有关更多信息,请参见MBRContains()的描述。

Contains()已过时,将在以后的 MySQL 版本中删除。请改用MBRContains()

Disjoint(g1, g2)

MBRDisjoint()Disjoint()是同义词。有关更多信息,请参见MBRDisjoint()的描述。

Disjoint()已过时,将在以后的 MySQL 版本中删除。请改用MBRDisjoint()

Equals(g1, g2)

MBREquals()Equals()是同义词。有关更多信息,请参见MBREquals()的描述。

Equals()已过时,将在以后的 MySQL 版本中删除。请改用MBREquals()

Intersects(g1, g2)

MBRIntersects()Intersects()是同义词。有关更多信息,请参见MBRIntersects()的描述。

Intersects()已过时,将在以后的 MySQL 版本中删除。请改用MBRIntersects()

Overlaps(g1, g2)

MBROverlaps()Overlaps()是同义词。有关更多信息,请参见MBROverlaps()的描述。

Overlaps()已过时,将在以后的 MySQL 版本中删除。请改用MBROverlaps()

Within(g1, g2)

MBRWithin()Within()是同义词。有关更多信息,请参见MBRWithin()的描述。

Within()已过时,将在以后的 MySQL 版本中删除。请改用MBRWithin()

首页