如果两个输入的Geometry对象有部分交集但互相不包含,则该函数返回True。

语法

boolean  ST_Crosses(geometry  g1 , geometry  g2);

参数

参数名称 描述
g1 第一个Geometry对象。
g2 第二个Geometry对象。

描述

  • 两个Geometry对象内部的交集不得为空集,相交集合对象的维度必须比两个输入对象的最大维度值要小。
  • 两个Geometry对象的交集不得等于任何一个源对象。否则,它返回False。
  • 两个Geometry对象的DE-9IM
    • T*T******(对于Point/Line,Point/Area,和Line/Area的情况)
    • T*****T**(对于Line/Point,Area/Point,和Area/Line的情况)
    • 0********(对于Line/Line的情况)
  • 该函数不支持GeometryCollection类型对象作为输入参数。
  • 该函数会自动生成一个bounding box用于利用Geometry对象上的索引。如果不想使用索引,请使用函数_ST_Crosses。

示例

  • 默认调用:
    SELECT ST_Crosses('LINESTRING(0 0,3 3)'::geometry,'LINESTRING(0 1,1 0)'::geometry);
     st_crosses
    ------------
     t
    (1 row)
                        
  • 有重叠:
     SELECT ST_Crosses('LINESTRING(0 0,3 3)'::geometry,'LINESTRING(0 0,1 1)'::geometry);
     st_crosses
    ------------
     f
    (1 row)
                        
  • 重叠区域维度与两个输入对象的最大维度值一致:
    SELECT ST_Crosses('LINESTRING(0 0,3 3)'::geometry,'LINESTRING(1 1,4 4)'::geometry);
     st_crosses
    ------------
     f
    (1 row)