10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

12.17.9.1使用对象形状的空间关系函数

OpenGIS规范定义了以下函数来测试两个几何值之间的关系g1而且g2,使用精确的物体形状。除了距离函数返回距离值之外,返回值1和0分别表示true和false。

本节中的函数检测笛卡尔或地理空间参考系统(SRS)中的参数,并返回与SRS相适应的结果。

除非另有说明,本节中的函数将按以下方式处理其几何参数:

  • 如果任何参数是或者任何几何参数都是空的,返回值是

  • 如果任何几何参数不是一个语法形式良好的几何,则一个ER_GIS_INVALID_DATA发生错误。

  • 如果任何几何参数在未定义的空间参考系统(SRS)中是一个语法形式良好的几何ER_SRS_NOT_FOUND发生错误。

  • 对于有多个几何参数的函数,如果这些参数不在同一个SRS中,则一个ER_GIS_DIFFERENT_SRIDS发生错误。

  • 如果任何几何参数在几何上无效,结果要么为真,要么为假(未定义哪个),要么发生错误。

  • 对于地理SRS几何参数,如果任何参数具有超出范围的经度或纬度,将发生错误:

    所示范围以度为单位。如果SRS使用其他单位,则范围使用其单位中的对应值。由于浮点运算,精确的范围限制稍有偏差。

  • 否则,返回值为非

本节中的一些函数允许使用unit参数指定返回值的长度单位。除非另有说明,函数将按照以下方式处理它们的单位参数:

这些对象形状函数可用于测试几何关系:

  • ST_Contains (g1g2

    返回1或0以指示是否g1完全包含g2.这将测试相反的关系为ST_Within ()

    ST_Contains ()处理其参数,如本节介绍中所述。

  • ST_Crosses (g1g2

    两个几何图形空间交叉如果它们的空间关系具有以下性质:

    • 除非g1而且g2都是1维的:g1十字架g2如果内部g2和内部有什么共同点吗g1,但g2不覆盖整个内部g1

    • 如果两个g1而且g2都是1维的:如果这些线在有限数量的点上相互交叉(也就是说,没有共同的线段,只有共同的点)。

    这个函数返回1或0来表示是否g1空间穿越g2

    ST_Crosses ()处理它的参数在本节的介绍中描述,除了返回值是对于这些附加条件:

    • g1是二维的(多边形多个多边形).

    • g2的维数为1 (多点).

  • ST_Disjoint (g1g2

    返回1或0以指示是否g1在空间上不相交(不相交)g2

    ST_Disjoint ()处理其参数,如本节介绍中所述。

  • ST_Distance (g1g2(,单位])

    返回之间的距离g1而且g2,以几何参数的空间参考系统(SRS)的长度单位来衡量,或以可选的单位来衡量单位参数。

    这个函数通过返回两个几何参数组件的所有组合中的最短距离来处理几何集合。

    ST_Distance ()处理其几何参数,如本节介绍中所述,但有以下例外:

    • ST_Distance ()检测地理(椭球)空间参考系统中的参数,并返回椭球上的大地距离。从MySQL 8.0.18开始,ST_Distance ()支持所有几何类型的地理SRS参数的距离计算。在MySQL 8.0.18之前,唯一允许的地理参数类型是而且,或而且多点(以任何论点顺序)。如果与地理SRS中的其他几何类型参数组合一起调用,则ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS发生错误。

    • 如果任何参数在几何上无效,要么结果是一个未定义的距离(也就是说,它可以是任何数字),要么发生错误。

    • 如果中间或最终结果产生或者一个负数,anER_GIS_INVALID_DATA发生错误。

    从MySQL 8.0.14开始,ST_Distance ()允许一个可选的单位参数,该参数指定返回距离值的线性单位。ST_Distance ()处理它单位参数如本节介绍中所述。

    mysql> SET @g1 = ST_GeomFromText('POINT(1)');mysql> SET @g2 = ST_GeomFromText('POINT(2)');SELECT ST_Distance(@g1, @g2);+-----------------------+ | ST_Distance (@g1 @g2 ) | +-----------------------+ | 1.4142135623730951  | +-----------------------+ mysql >设置@g1 = ST_GeomFromText(“点(1 - 1)”,4326年);mysql> SET @g2 = ST_GeomFromText('POINT(2 2)', 4326);SELECT ST_Distance(@g1, @g2);+-----------------------+ | ST_Distance (@g1 @g2 ) | +-----------------------+ | 156874.3859490455  | +-----------------------+ mysql >选择ST_Distance (@g1 @g2,“米”);+--------------------------------+ | ST_Distance (@g1 @g2,”米 ') | +--------------------------------+ | 156874.3859490455  | +--------------------------------+ mysql >选择ST_Distance (@g1 @g2,“脚”);+-------------------------------+ | ST_Distance (@g1, @g2脚 ') | +-------------------------------+ | 514679.7439273146  | +-------------------------------+

    有关在球面上计算距离的特殊情况,请参阅ST_Distance_Sphere ()函数。

  • ST_Equals (g1g2

    返回1或0以指示是否g1空间上等于g2

    ST_Equals ()按照本节导言中描述的方式处理其参数,但不返回对于空的几何参数。

    SET @g1 = Point(1,1), @g2 = Point(2,2);SELECT ST_Equals(@g1, @g1), ST_Equals(@g1, @g2);+---------------------+---------------------+ | ST_Equals (@g1 @g1) | ST_Equals (@g1 @g2 ) | +---------------------+---------------------+ | 1 | 0  | +---------------------+---------------------+
  • ST_FrechetDistance (g1g2(,单位])

    返回两个几何图形之间的离散的Fréchet距离,反映几何图形的相似程度。结果是用几何参数的空间参考系统(SRS)的长度单位测量的双精度数,或用的长度单位测量的单位参数,如果参数已经给出。

    这个函数实现了离散的Fréchet距离,这意味着它被限制为几何图形点之间的距离。例如,给定2LineString参数时,只考虑几何图形中显式提到的点。这些点之间的线段上的点不被考虑。

    ST_FrechetDistance ()处理其几何参数,如本节介绍中所述,但有以下例外:

    ST_FrechetDistance ()处理它的可选单位参数如本节介绍中所述。

    mysql> SET @ls1 = ST_GeomFromText('LINESTRING(0 0,0 5,5)');mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 1,0 6,3 3,5 6)');SELECT ST_FrechetDistance(@ls1, @ls2);+--------------------------------+ | ST_FrechetDistance (@ls1 @ls2 ) | +--------------------------------+ | 2.8284271247461903  | +--------------------------------+ mysql >设置@ls1 = ST_GeomFromText(“LINESTRING (0 0 0 5 5 5) ', 4326);mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 1,0 6,3 3,5 6)', 4326);SELECT ST_FrechetDistance(@ls1, @ls2);+--------------------------------+ | ST_FrechetDistance (@ls1 @ls2 ) | +--------------------------------+ | 313421.1999416798  | +--------------------------------+ mysql >选择ST_FrechetDistance (@ls1 @ls2,“脚”);+----------------------------------------+ | ST_FrechetDistance (@ls1 @ls2,脚 ') | +----------------------------------------+ | 1028284.7767115477  | +----------------------------------------+

    此功能在MySQL 8.0.23中新增。

  • ST_HausdorffDistance (g1g2(,单位])

    返回两个几何图形之间的离散Hausdorff距离,反映两个几何图形的相似程度。结果是用几何参数的空间参考系统(SRS)的长度单位测量的双精度数,或用的长度单位测量的单位参数,如果参数已经给出。

    这个函数实现了离散的Hausdorff距离,这意味着它被限制为几何图形点之间的距离。例如,给定2LineString参数时,只考虑几何图形中显式提到的点。这些点之间的线段上的点不被考虑。

    ST_HausdorffDistance ()处理其几何参数,如本节介绍中所述,但有以下例外:

    • 如果几何参数在相同的笛卡尔或地理SRS中,但不在一个受支持的组合中,则ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRSER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS错误发生,这取决于SRS类型。支持以下组合:

      • LineString而且LineString

      • 而且多点

      • LineString而且MultiLineString

      • 多点而且多点

      • MultiLineString而且MultiLineString

    ST_HausdorffDistance ()处理它的可选单位参数如本节介绍中所述。

    mysql> SET @ls1 = ST_GeomFromText('LINESTRING(0 0,0 5,5)');mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 1,0 6,3 3,5 6)');SELECT ST_HausdorffDistance(@ls1, @ls2);+----------------------------------+ | ST_HausdorffDistance (@ls1 @ls2 ) | +----------------------------------+ | 1  | +----------------------------------+ mysql >设置@ls1 = ST_GeomFromText(“LINESTRING (0 0 0 5 5 5) ', 4326);mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 1,0 6,3 3,5 6)', 4326);SELECT ST_HausdorffDistance(@ls1, @ls2);+----------------------------------+ | ST_HausdorffDistance (@ls1 @ls2 ) | +----------------------------------+ | 111319.49079326246  | +----------------------------------+ mysql >选择ST_HausdorffDistance (@ls1 @ls2,“脚”);+------------------------------------------+ | ST_HausdorffDistance (@ls1 @ls2,脚 ') | +------------------------------------------+ | 365221.4264870815  | +------------------------------------------+

    此功能在MySQL 8.0.23中新增。

  • ST_Intersects (g1g2

    返回1或0以指示是否g1空间相交g2

    ST_Intersects ()处理其参数,如本节介绍中所述。

  • ST_Overlaps (g1g2

    两个几何图形空间重叠如果它们相交,并且它们相交的结果是一个几何尺寸相同但不等于任何给定的几何。

    这个函数返回1或0来表示是否g1空间重叠g2

    ST_Overlaps ()处理它的参数在本节的介绍中描述,除了返回值是对于两个几何图形的尺寸不相等的附加条件。

  • ST_Touches (g1g2

    两个几何图形空间联系如果它们的内部不相交,但其中一个几何图形的边界与另一个几何图形的边界或内部相交。

    这个函数返回1或0来表示是否g1空间触动g2

    ST_Touches ()处理它的参数在本节的介绍中描述,除了返回值是对于两个几何图形的维数都为0的附加条件(多点).

  • ST_Within (g1g2

    返回1或0以指示是否g1内空间g2.这将测试相反的关系为ST_Contains ()

    ST_Within ()处理其参数,如本节介绍中所述。