使用空间关系函数可以对几何体的空间关系进行判断。

  • ST_Contains:当g2的所有点都在g1的范围中,返回1,否则返回0。
  • ST_Crosses:当且仅当左几何体穿过右几何体时返回1。
  • ST_Disjoint:当且仅当左几何体和右几何体的交集为空时返回1。
  • ST_Equals:当且仅当左几何体等于右几何体时返回1。
  • ST_Intersects:当且仅当左几何体与右几何体相交时返回1。
  • ST_Overlaps:当且仅当左几何体与右几何体重叠时返回0。
  • ST_Relate:当且仅当左几何体与右几何体具有指定的尺寸扩展九交集模型(TRUEDE-9IM)关系时返回1。第三个(varchar)输入接受此关系。
  • ST_Touches:当且仅当左几何体与右几何体接触时返回1。
  • ST_Within:当且仅当左几何体位于右几何体内时返回1。

ST_Contains

ST_Contains(g1, g2)
  • 命令说明:当g2的所有点都在g1的范围中,返回1,否则返回0(1为True,0为False)。
    说明 g1的范围不包括其边界。
  • 返回值类型:INT。
  • 示例:
    SELECT ST_Contains(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'), ST_GeometryFromText('POINT (2 2)'));
    返回结果:
    +-----------------------------------------------------------------------------------------------------+
    |ST_Contains(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'), ST_GeometryFromText('POINT (2 2)')) |
    +-----------------------------------------------------------------------------------------------------+
    |                           1                                                                         |

ST_Crosses

ST_Crosses(g1, g2)
  • 命令说明:当且仅当左几何体穿过右几何体时返回1(1为True,0为False)。
  • 返回值类型:INT。
  • 示例:
    SELECT ST_Crosses(ST_GeometryFromText('POINT (20 20)'), ST_GeometryFromText('POINT (25 25)')); 
    返回结果:
    +----------------------------------------------------------------------------------------------+
    |ST_Crosses(ST_GeometryFromText('POINT (20 20)'), ST_GeometryFromText('POINT (25 25)'))        |
    +----------------------------------------------------------------------------------------------+   
    |                 0                                                                            |

ST_Disjoint

ST_Disjoint(g1, g2)
  • 命令说明:当且仅当左几何体和右几何体的交集为空时返回1(1为True,0为False)。
  • 返回值类型:INT。
  • 示例:
    SELECT ST_Disjoint(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'));
    返回结果:
    +--------------------------------------------------------------------------------------------------+
    |ST_Disjoint(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))        |
    +--------------------------------------------------------------------------------------------------+   
    |                        1                                                                         | 

ST_Equals

ST_Equals(g1, g2)
  • 命令说明:当且仅当左几何体等于右几何体时返回1(1为True,0为False)。
  • 返回值类型:INT。
  • 示例:
    SELECT ST_Equals(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'));  
    返回结果:
    +------------------------------------------------------------------------------------------------+
    |ST_Equals(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))        |
    +------------------------------------------------------------------------------------------------+   
    |                  0                                                                             | 

ST_Intersects

ST_Intersects(g1, g2)
  • 命令说明:当且仅当左几何体与右几何体相交时返回1(1为True,0为False)。
  • 返回值类型:INT。
  • 示例:
    SELECT ST_Intersects(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'));  
    返回结果:
    +----------------------------------------------------------------------------------------------------+
    |ST_Intersects(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))        |
    +----------------------------------------------------------------------------------------------------+   
    |                 0                                                                                  | 

ST_Overlaps

ST_Overlaps(g1, g2)
  • 命令说明:当且仅当左几何体与右几何体重叠时返回0(0为True,1为False)。
  • 返回值类型:INT。
  • 示例:
    SELECT ST_Overlaps(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'), ST_GeometryFromText('POLYGON ((3 3, 3 5, 5 5, 5 3))'));  
    返回结果:
    +---------------------------------------------------------------------------------------------------------------------------------+
    |ST_Overlaps(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'), ST_GeometryFromText('POLYGON ((3 3, 3 5, 5 5, 5 3))'))        |
    +---------------------------------------------------------------------------------------------------------------------------------+   
    |                 1                                                                                                               | 

ST_Relate

ST_Relate(g1, g2, s1)
  • 命令说明:当且仅当左几何体与右几何体具有指定的尺寸扩展有交集模型(TRUEDE-9IM)关系时返回1(1为True,0为False)。第三个 (varchar)输入接受此关系。
  • 返回值类型:INT。
  • 示例:
    SELECT ST_Relate(ST_GeometryFromText('LINESTRING (0 0, 3 3)'), ST_GeometryFromText('LINESTRING (1 1, 4 1)'), '****T****'); 
    返回参数:
    +--------------------------------------------------------------------------------------------------------------------------+
    |ST_Relate(ST_GeometryFromText('LINESTRING (0 0, 3 3)'), ST_GeometryFromText('LINESTRING (1 1, 4 1)'), '****T****')        |
    +--------------------------------------------------------------------------------------------------------------------------+   
    |                 0                                                                                                        | 

ST_Touches

ST_Touches(g1, g2)
  • 命令说明:当且仅当左几何体与右几何体接触时返回1(1为True,0为False)。
  • 返回值类型:INT。
  • 示例:
    SELECT ST_Touches(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'));  
    返回结果:
    +-------------------------------------------------------------------------------------------------+
    |ST_Touches(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))        |
    +-------------------------------------------------------------------------------------------------+   
    |                     0                                                                           | 

ST_Within

ST_Within(g1, g2)
  • 命令说明:当且仅当左几何体位于右几何体内时返回1(1为True,0为False)。
  • 返回值类型:BOOLEAN。
  • 示例:
    SELECT ST_Within(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))  
    返回结果:
    +-------------------------------------------------------------------------------------------------+
    |ST_Within(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))         |
    +-------------------------------------------------------------------------------------------------+   
    |                 0                                                                               |