ST_LINECROSSINGDIRECTION
📄字数 1.2K
👁️阅读量 加载中...
功能描述
给定两个线串,返回它们之间存在的交叉行为编号。
语法格式
sql
INTEGER ST_LINECROSSINGDIRECTION(GEOMETRY linestringA, GEOMETRY linestringB);参数说明
- linestringA:第一个目标 LINESTRING 对象。
- linestringB:第二个目标 LINESTRING 对象。
函数返回类型
INTEGER 类型
使用说明
- 仅 LINESTRING 支持此功能。
- 交叉行为编号,范围:[-3, 3]。含义如下:
- 0:线无交叉。
- -1:向左交叉线。
- 1:向右交叉线。
- -2:表示一条线段多次交叉,并且最后一次交叉是从左侧。
- 2:表示一条线段多次交叉,并且最后一次交叉是从右侧。
- -3:表示一条线段多次交叉,但最后一次交叉是从同一侧(首次)的左侧。
- 3:表示一条线段多次交叉,但最后一次交叉是从同一侧(首次)的右侧。
示例
向左交叉线和向右交叉线:
sql
SQL> SELECT ST_LINECROSSINGDIRECTION(lineA, lineB) As A_cross_B,
ST_LINECROSSINGDIRECTION(lineB, lineA) As B_cross_A
FROM (SELECT
ST_GEOMFROMTEXT('LINESTRING(25 169,89 114,40 70,86 43)') As lineA,
ST_GEOMFROMTEXT('LINESTRING (20 140, 71 74, 161 53)') As lineB
) As foo;
+-----------+-----------+
| A_CROSS_B | B_CROSS_A |
+-----------+-----------+
| -1 | 1 |
+-----------+-----------+
(1 row)一条线段多次交叉并且最后一次交叉从同一侧(首次)左侧和一条线段多次交叉并且最后一次交叉从同一侧(首次)右侧:
sql
SQL> SELECT ST_LINECROSSINGDIRECTION(lineA, lineB) As A_cross_B,
ST_LINECROSSINGDIRECTION(lineB, lineA) As B_cross_A
FROM (SELECT
ST_GEOMFROMTEXT('LINESTRING(25 169,89 114,40 70,86 43)') As lineA,
ST_GEOMFROMTEXT('LINESTRING(171 154,20 140,71 74,161 53)') As lineB
) As foo;
+-----------+-----------+
| A_CROSS_B | B_CROSS_A |
+-----------+-----------+
| 3 | -3 |
+-----------+-----------+
(1 row)一条线段多次交叉并且最后一次交叉从左侧和一条线段多次交叉并且最后一次交叉从右侧:
sql
SQL> SELECT ST_LINECROSSINGDIRECTION(lineA, lineB) As A_cross_B,
ST_LINECROSSINGDIRECTION(lineB, lineA) As B_cross_A
FROM (SELECT
ST_GEOMFROMTEXT('LINESTRING(25 169,89 114,40 70,86 43)') As lineA,
ST_GEOMFROMTEXT('LINESTRING(5 90, 71 74, 20 140, 171 154)') As lineB
) As foo;
+-----------+-----------+
| A_CROSS_B | B_CROSS_A |
+-----------+-----------+
| -2 | 2 |
+-----------+-----------+
(1 row)