ST_SETPOINT
📄字数 650
👁️阅读量 加载中...
功能描述
用给定点替换线串的点。
语法格式
sql
GEOMETRY ST_SETPOINT(GEOMETRY linestring, INTEGER zerobasedposition, GEOMETRY point);参数说明
- linestring:目标 LINESTRING 对象。
- zerobasedposition: 插入位置的索引编号,从 0 开始。
- point:待插入的 POINT 对象。
函数返回类型
GEOMETRY 类型
使用说明
- 负索引是倒数的顺序,因此 -1 是最后一个点。
- 当一个顶点移动时试图维持关节关系时,这在触发器中特别有用。
- 该函数支持 3d 并且不会丢失 z-index。
示例
将线串的第一个点 (-1,2) 替换为 (-1,1):
sql
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_SETPOINT('LINESTRING(-1 2,-1 3)', 0, 'POINT(-1 1)')));
+-----------------------+
| EXPR1 |
+-----------------------+
| LINESTRING(-1 1,-1 3) |
+-----------------------+将3D 线串的最后一个点 (-5 6 7) 替换为 (-1 1 3):
sql
SQL> SELECT TO_CHAR(ST_ASEWKT(ST_SETPOINT(foo.geom, ST_NUMPOINTS(foo.geom) - 1, ST_GEOMFROMEWKT('POINT(-1 1 3)'))))
FROM (SELECT ST_GEOMFROMEWKT('LINESTRING(-1 2 3,-1 3 4, 5 6 7)') As geom) As foo;
+----------------------------------+
| EXPR1 |
+----------------------------------+
| LINESTRING(-1 2 3,-1 3 4,-1 1 3) |
+----------------------------------+负索引,将线串的倒数第 3 个点 (2 2) 替换为 (-1,1):
sql
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_SETPOINT('LINESTRING(0 0, 1 1, 2 2, 3 3, 4 4)', -3, 'POINT(-1 1)')));
+----------------------------------+
| EXPR1 |
+----------------------------------+
| LINESTRING(0 0,1 1,-1 1,3 3,4 4) |
+----------------------------------+