MySQL提供了几个特定于MySQL的函数,用于测试两个几何图形的最小边界矩形(mbr)之间的关系g1
而且g2
.返回值1和0分别表示true和false。
点的边界框被解释为同时是边界和内部的点。
水平或垂直线的边界框解释为线的内部也是边界的线。端点是边界点。
如果任何参数是几何集合,则这些参数的内部、边界和外部是集合中所有元素的并集。
本节中的函数检测笛卡尔或地理空间参考系统(SRS)中的参数,并返回适合于SRS的结果。
除非另有说明,本节中的函数处理几何参数的方式如下:
如果任何论点是
零
或者一个空的几何图形,返回值是零
.如果任何几何参数不是语法格式良好的几何,则
ER_GIS_INVALID_DATA
发生错误。如果任何几何参数是未定义空间参考系统(SRS)中语法良好的几何,则
ER_SRS_NOT_FOUND
发生错误。对于具有多个几何参数的函数,如果这些参数不在同一个SRS中,则
ER_GIS_DIFFERENT_SRIDS
发生错误。如果任何参数在几何上是无效的,要么结果是真或假(它是未定义的),或一个错误发生。
对于地理SRS几何参数,如果任何参数有超出范围的经度或纬度,则会发生错误:
如果经度值不在范围内(−180,180),则
ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE
发生错误(ER_LONGITUDE_OUT_OF_RANGE
MySQL 8.0.12之前的版本)。如果纬度值不在[−90,90]范围内,则
ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE
发生错误(ER_LATITUDE_OUT_OF_RANGE
MySQL 8.0.12之前的版本)。
显示的范围以度表示。如果SRS使用其他单位,则范围使用其单位对应的值。由于使用浮点运算,精确的范围限制稍有偏差。
否则,返回值为non-
零
.
这些MBR函数可用于测试几何关系:
的最小边界矩形是否为
g1
的最小边框矩形g2
.这测试了相反的关系MBRWithin ()
.MBRContains ()
如本节介绍中所述处理其参数。mysql> SET @g1 = ST_GeomFromText('多边形((0 0,0 3,3 3,3 0,0 0))');mysql> SET @g2 = ST_GeomFromText('点(1 1)');mysql> SELECT MBRContains(@g1,@g2), MBRWithin(@g2,@g1);+----------------------+--------------------+ | MBRContains (@g1 @g2) | MBRWithin (@g2 @g1 ) | +----------------------+--------------------+ | 1 | 1 | +----------------------+--------------------+
的最小边界矩形是否为
g1
的最小边界矩形覆盖g2
.这测试了相反的关系MBRCovers ()
.MBRCoveredBy ()
如本节介绍中所述处理其参数。mysql> SET @g1 = ST_GeomFromText('多边形((0 0,0 3,3 3,3 0,0 0))');mysql> SET @g2 = ST_GeomFromText('点(1 1)');SELECT MBRCovers(@g1,@g2), MBRCoveredby(@g1,@g2);+--------------------+-----------------------+ | MBRCovers (@g1 @g2) | MBRCoveredby (@g1 @g2 ) | +--------------------+-----------------------+ | 1 | 0 | +--------------------+-----------------------+ mysql >选择MBRCovers (@g2 @g1) MBRCoveredby (@g2 @g1);+--------------------+-----------------------+ | MBRCovers (@g2 @g1) | MBRCoveredby (@g2 @g1 ) | +--------------------+-----------------------+ | 0 | 1 | +--------------------+-----------------------+
的最小边界矩形是否为
g1
的最小边界矩形g2
.这测试了相反的关系MBRCoveredBy ()
.参见MBRCoveredBy ()
为例子。MBRCovers ()
如本节介绍中所述处理其参数。返回1或0,以指示两个几何图形的最小边界矩形
g1
而且g2
不相交(不相交)。MBRDisjoint ()
如本节介绍中所述处理其参数。返回1或0,以指示两个几何图形的最小边界矩形
g1
而且g2
都是一样的。MBREquals ()
如本节介绍中描述的那样处理它的参数,除非它不返回零
对于空的几何参数。返回1或0,以指示两个几何图形的最小边界矩形
g1
而且g2
相交。MBRIntersects ()
如本节介绍中所述处理其参数。两个几何图形空间重叠如果它们相交它们的交点会得到相同维数的几何图形但不等于给定的任何一个几何图形。
这个函数返回1或0来指示两个几何图形的最小边界矩形
g1
而且g2
重叠。MBROverlaps ()
如本节介绍中所述处理其参数。两个几何图形空间联系如果它们的内部不相交,但其中一个几何图形的边界与另一个几何图形的边界或内部相交。
这个函数返回1或0来指示两个几何图形的最小边界矩形
g1
而且g2
联系。MBRTouches ()
如本节介绍中所述处理其参数。的最小边界矩形是否为
g1
的最小边界矩形内是g2
.这测试了相反的关系MBRContains ()
.MBRWithin ()
如本节介绍中所述处理其参数。mysql> SET @g1 = ST_GeomFromText('多边形((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))');SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);+--------------------+--------------------+ | MBRWithin (@g1 @g2) | MBRWithin (@g2 @g1 ) | +--------------------+--------------------+ | 1 | 0 | +--------------------+--------------------+