Skip to content

##

功能描述

计算第二个对象上离第一个对象最近的点。

数据类型

L_OPERAND_TYP(左操作数类型)R_OPERAND_TYP(右操作数类型)RET_TYPE(返回类型)
POINTBOXPOINT
POINTLSEG
POINTLINE
LSEGBOX
LSEGLSEG
LINELSEG

示例

  • ##(POINT, BOX)
    返回边框到点的最近的点。

    sql
    SQL> SELECT POINT('(0,0)') ## BOX('(2,2),(4,4)');
    
    EXPR1    |
    ---------+
    (2.0,2.0)|
  • ##(POINT, LSEG)
    返回线段到点的最近的点。

    sql
    SQL> SELECT POINT('(0,0)') ## LSEG('[(2,0),(0,2)]');
    
    EXPR1    |
    ---------+
    (1.0,1.0)|
  • ##(POINT, LINE)
    返回直线到点的最近的点。

    sql
    SQL> SELECT point('(0,0)') ## LINE('[(2,0),(0,2)]');
    
    EXPR1    |
    ---------+
    (1.0,1.0)|
  • ##(LSEG, BOX)
    返回边框到线段的最近的点。

    sql
    SQL> SELECT LSEG('[(2,0),(0,2)]') ## BOX('(2,2),(4,4)');
    
    EXPR1    |
    ---------+
    (2.0,2.0)|
  • ##(LSEG, LSEG)
    返回线段到线段的最近的点。

    sql
    SQL> SELECT LSEG('[(2,0),(0,2)]') ## LSEG('[(-2,0),(0,0)]');
    
    EXPR1    |
    ---------+
    (0.0,0.0)|
    
    -- 两条平行线段,返回 NULL。
    SQL> SELECT lseg('[(2,0),(0,2)]') ## lseg('[(-2,0),(0,-2)]');
    
    EXPR1 |
    ------+
    <NULL>|
    
    Total 1 records.
  • ##(LINE, LSEG)
    返回线段到直线的最近的点。

    sql
    SQL> SELECT LINE('[(-2,0),(0,0)]') ## lseg('[(2,0),(0,2)]');
    
    EXPR1    |
    ---------+
    (2.0,0.0)|