12.16.9.1 使用对象形状的空间关系函数
OpenGIS 规范定义了以下功能,以使用精确的对象形状来测试两个几何值g1
和g2
之间的关系。返回值 1 和 0 分别 table 示 true 和 false,但返回距离值的ST_Distance()和Distance()除外。
这些函数支持所有参数类型组合,但根据 Open Geospatial Consortium 规范不适用的除外。
ST_Crosses()和Crosses()是同义词。有关更多信息,请参见ST_Crosses()的描述。
Crosses()已过时,将在以后的 MySQL 版本中删除。请改用ST_Crosses()。
ST_Distance()和Distance()是同义词。有关更多信息,请参见ST_Distance()的描述。
Distance()已过时,将在以后的 MySQL 版本中删除。请改用ST_Distance()。
返回 1 或 0 以指示* g1
是否完全包含 g2
*。这将测试相反的关系为ST_Within()。
术语“空间交叉”table 示具有以下属性的两个给定几何之间的空间关系:
-
这两个几何形状相交。
-
它们的相交产生的几何尺寸小于两个给定几何的最大尺寸。
-
它们的交点不等于两个给定几何形状中的任何一个。
-
此函数返回 1 或 0 以指示* g1
是否在空间上与 g2
相交。如果g1
是Polygon
或MultiPolygon
,或者 g2
*是Point
或MultiPoint
,则返回值为NULL
。
如果使用不适用的几何参数类型组合调用此函数,则返回 0.例如,如果第一个参数是Polygon
或MultiPolygon
和/或第二个参数是Point
或MultiPoint
,则它返回 0.
如果* g1
在空间上交叉 g2
,则返回 1.如果g1
是Polygon
或MultiPolygon
或 g2
*是Point
或MultiPoint
,则返回NULL
。否则,返回 0.
如果使用不适用的几何参数类型组合调用此函数,则返回 0.例如,如果第一个参数是Polygon
或MultiPolygon
和/或第二个参数是Point
或MultiPoint
,则它返回 0.
ST_Crosses()和Crosses()是同义词。
返回 1 或 0 以指示* g1
在空间上与 g2
*不相交(不相交)。
返回* g1
和 g2
*之间的距离。如果任何一个参数是NULL
或空的几何体,则返回值为NULL
。
此函数通过返回两个几何参数的分量的所有组合中的最短距离来处理几何图形集合。
如果中间结果或最终结果产生 NaN 或负数,则会发生ER_GIS_INVALID_DATA错误。
mysql> SET @g1 = Point(1,1);
mysql> SET @g2 = Point(2,2);
mysql> SELECT ST_Distance(@g1, @g2);
+-----------------------+
| ST_Distance(@g1, @g2) |
+-----------------------+
| 1.4142135623730951 |
+-----------------------+
ST_Distance()和Distance()是同义词。
返回 1 或 0 以指示* g1
在空间上是否等于 g2
*。
mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);
mysql> SELECT ST_Equals(@g1, @g1), ST_Equals(@g1, @g2);
+---------------------+---------------------+
| ST_Equals(@g1, @g1) | ST_Equals(@g1, @g2) |
+---------------------+---------------------+
| 1 | 0 |
+---------------------+---------------------+
返回 1 或 0 以指示* g1
在空间上是否相交 g2
*。
如果两个几何形状相交且“相交”,并且它们的相交会产生相同尺寸但不等于任何给定几何形状的几何形状,则“在空间上重叠”。
此函数返回 1 或 0 以指示* g1
在空间上重叠 g2
*。
如果使用不适用的几何参数类型组合调用此函数,则返回 0.例如,如果使用不同尺寸的几何图形调用,或者任何参数为Point
,则返回 0.
如果两个几何的内部不相交,则“在空间上接触”,但是其中一个几何的边界与另一个的边界或内部相交。
此函数返回 1 或 0 以指示* g1
是否在空间上触摸 g2
*。
如果使用不适用的几何参数类型组合调用此函数,则返回 0.例如,如果两个参数之一为Point
或MultiPoint
,则返回 0.
ST_Touches()和Touches()是同义词。
返回 1 或 0 以指示* g1
在空间上是否在 g2
*内。这将测试相反的关系为ST_Contains()。
ST_Touches()和Touches()是同义词。有关更多信息,请参见ST_Touches()的描述。
Touches()已过时,将在以后的 MySQL 版本中删除。请改用ST_Touches()。