Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_SETPOINT

📄字数 650
👁️阅读量 加载中...

功能描述

用给定点替换线串的点。

语法格式

sql
GEOMETRY ST_SETPOINT(GEOMETRY linestring, INTEGER zerobasedposition, GEOMETRY point);

参数说明

  • linestring:目标 LINESTRING 对象。
  • zerobasedposition: 插入位置的索引编号,从 0 开始。
  • point:待插入的 POINT 对象。

函数返回类型

GEOMETRY 类型

使用说明

  1. 负索引是倒数的顺序,因此 -1 是最后一个点。
  2. 当一个顶点移动时试图维持关节关系时,这在触发器中特别有用。
  3. 该函数支持 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) |
+----------------------------------+