10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

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

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

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

除非另有说明,否则本节中的函数处理其几何参数,如下所示:

  • 如果有任何争论空值或任何几何参数都是空几何,返回值是空值

  • 如果任何几何参数不是句法良好的几何形状,则ER_GIS_INVALID_DATA发生错误。

  • 如果任何几何参数是未定义的空间参考系统(SRS)中的句法良好的几何形状,则ER_SRS_NOT_FOUND发生错误。

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

  • 如果任何几何参数在几何上无效,结果要么为真要么为假(这是未定义的),否则就会发生错误。

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

    所示的范围是度数。如果SRS使用另一个单元,则该范围使用其单元中的相应值。由于浮点算术,确切范围限制略微偏离。

  • 否则,返回值为non-空值

本节中的某些函数允许一个单位参数,该参数指定返回值的长度单位。除非另有说明,否则函数处理其单位参数,如下所示:

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

  • ST_Contains (g1g2

    返回1或0表示是否g1完全包含g2。这测试了相反的关系st_within()

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

  • st_crosses(g1g2

    两个几何形状空间十字架如果它们的空间关系具有以下性质:

    • 除非g1g2都是第1维度:g1十字架g2如果内部g2与内部有共同点g1,但g2没有覆盖整个内部吗g1

    • 如果两个g1g2是尺寸1:如果线路在有限数量的点中相互交叉(即,没有公共线段,只有共同点的单点)。

    此函数返回1或0以指示是否g1空间穿越g2

    st_crosses()按照本节介绍的方法处理它的参数,除了返回值是空值对于这些额外的条件:

    • g1是尺寸2(多边形多聚底)。

    • g2是尺寸1(多点)。

  • st_disjoint(g1g2

    返回1或0表示是否g1从空间脱节(不相交)g2

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

  • ST_Distance (g1g2[,单位])

    返回g1g2,以长度单位测量空间参考系统(SRS)的几何参数,或在单位可选单位参数指定了。

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

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

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

    • 如果任何参数都是无效的,则结果是未定义的距离(即,它可以是任何数字),或者发生错误。

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

    截至MySQL 8.0.14,ST_Distance ()允许一个可选的单位参数,指定返回距离值的线性单位。ST_Distance ()处理它单位参数在本节简介中描述。

    mysql> set @ g1 = st_geom fromtext('point(1 1)');mysql> set @ g2 = st_geomfromtext('point(2 2)');mysql>选择st_distance(@ g1,@ g2);+ --------------------- + |st_distance(@ g1,@ g2)|+ --------------------- + |1.4142135623730951 |+ -------------------- + mysql> set @ g1 = st_geom fromtext('point(1 1)',4326);mysql> set @ g2 = st_geom fromtext('point(2 2)',4326);mysql>选择st_distance(@ g1,@ g2); +-----------------------+ | ST_Distance(@g1, @g2) | +-----------------------+ | 156874.3859490455 | +-----------------------+ mysql> SELECT ST_Distance(@g1, @g2, 'metre'); +--------------------------------+ | ST_Distance(@g1, @g2, 'metre') | +--------------------------------+ | 156874.3859490455 | +--------------------------------+ mysql> SELECT ST_Distance(@g1, @g2, 'foot'); +-------------------------------+ | ST_Distance(@g1, @g2, 'foot') | +-------------------------------+ | 514679.7439273146 | +-------------------------------+

    对于球上距离计算的特殊情况,请参阅st_distance_sphere()函数。

  • st_equals(g1g2

    返回1或0表示是否g1空间等于g2

    ST_Equals ()像本节介绍中描述的那样处理它的参数,除非它不返回空值对于空的几何参数。

    mysql> set @ g1 = point(1,1),@ g2 = point(2,2);mysql>选择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距离,这意味着它仅限于几何点之间的距离。例如,给予两个LineString参数,只有在几何中明确提到的点被考虑。不考虑这些点之间的线段上的点。

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

    st_frechetdistance()处理它的可选单位参数在本节简介中描述。

    mysql> set @ ls1 = st_geom fromtext('linestring(0 0,05,5 5)');mysql> set @ ls2 = st_geom fromtext('linestring(0 1,06,3 3,5 6)');MySQL>选择ST_FRECHETDISTANCE(@ LS1,@ LS2);+ ---------------------------- + |st_frechetdistance(@ ls1,@ ls2)|+ ---------------------------- + |2.8284271247461903 |+ ----------------------------- + mysql> set @ ls1 = st_geomfromtext('linestring(0 0,0 5,5 5)',4326);MySQL> SET @ LS2 = ST_GEOMFROMTEXT('LINESTRING(0 1,06,3 3,5 6)',4326);MySQL>选择ST_FRECHETDISTANCE(@ LS1,@ LS2); +--------------------------------+ | ST_FrechetDistance(@ls1, @ls2) | +--------------------------------+ | 313421.1999416798 | +--------------------------------+ mysql> SELECT ST_FrechetDistance(@ls1, @ls2, 'foot'); +----------------------------------------+ | ST_FrechetDistance(@ls1, @ls2, 'foot') | +----------------------------------------+ | 1028284.7767115477 | +----------------------------------------+

    这个函数是在MySQL 8.0.23中添加的。

  • ST_HausdorffDistance (g1g2[,单位])

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

    这个函数实现了离散的Hausdorff距离,这意味着它被限制为几何点之间的距离。例如,给予两个LineString参数,只有在几何中明确提到的点被考虑。不考虑这些点之间的线段上的点。

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

    ST_HausdorffDistance ()处理它的可选单位参数在本节简介中描述。

    mysql> set @ ls1 = st_geom fromtext('linestring(0 0,05,5 5)');mysql> set @ ls2 = st_geom fromtext('linestring(0 1,06,3 3,5 6)');mysql>选择st_hausdorffdistance(@ ls1,@ ls2);+ ------------------------------- + |st_hausdorffdistance(@ ls1,@ ls2)|+ ------------------------------- + |1 |+ ------------------------------- + MySQL> SET @ LS1 = ST_GEOMFROMTEXT('LINESTRING(0 0,0 5,5 5)',4326);MySQL> SET @ LS2 = ST_GEOMFROMTEXT('LINESTRING(0 1,06,3 3,5 6)',4326);mysql>选择st_hausdorffdistance(@ ls1,@ ls2); +----------------------------------+ | ST_HausdorffDistance(@ls1, @ls2) | +----------------------------------+ | 111319.49079326246 | +----------------------------------+ mysql> SELECT ST_HausdorffDistance(@ls1, @ls2, 'foot'); +------------------------------------------+ | ST_HausdorffDistance(@ls1, @ls2, 'foot') | +------------------------------------------+ | 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()如本节介绍中所述处理其参数。