Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_SNAPTOGRID

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

功能描述

将输入几何体的所有点捕捉到由其原点和像元大小定义的网格。

语法格式

sql
GEOMETRY ST_SNAPTOGRID(GEOMETRY geomA, DOUBLE originX, DOUBLE originY, DOUBLE sizeX, DOUBLE sizeY);

GEOMETRY ST_SNAPTOGRID(GEOMETRY geomA, DOUBLE sizeX, DOUBLE sizeY);

GEOMETRY ST_SNAPTOGRID(GEOMETRY geomA, DOUBLE size);

GEOMETRY ST_SNAPTOGRID(GEOMETRY geomA, GEOMETRY pointOrigin, DOUBLE sizeX, DOUBLE sizeY, DOUBLE sizeZ, flDOUBLEoat sizeM);

参数说明

  • geomA:目标 GEOMETRY 对象。
  • originX:原点 X值。
  • originY:原点 Y值。
  • sizeX:像元 X 值。
  • sizeY:像元 Y 值。
  • sizeZ:像元 Z 值。
  • sizeM:像元 M 值。
  • size:像元大小, X、Y 值
  • pointOrigin:原点, POINT 对象。

函数返回类型

GEOMETRY 类型

使用说明

  1. 删除落在同一单元上的连续点。如果输出点不足以定义给定类型的几何图形,则最终返回 NULL。
  2. 集合中折叠的几何图形将从其中剥离。
  3. 对于降低精度很有用。
  4. 返回的几何图形可能会失去其简单性(请参阅ST_IsSimple)。
  5. 返回的几何图形将具有与输入几何图形相同的维度,但更高的维度值保持不变。
  6. 该函数支持 3d 并且不会丢失 z-index。

示例

捕捉网格精度为0.001的几何体,并删除落在同一单元上的连续点:

sql

SQL> SELECT TO_CHAR(ST_ASTEXT(ST_SNAPTOGRID(
        ST_GEOMFROMTEXT('LINESTRING(1.1115678 2.123, 4.111111 3.2374897, 4.11112 3.23748667)'),0.001)));

+-------------------------------------+
|                EXPR1                |
+-------------------------------------+
| LINESTRING(1.112 2.123,4.111 3.237) |
+-------------------------------------+

捕捉 4D 几何体:

sql

SQL> SELECT TO_CHAR(ST_ASEWKT(ST_SNAPTOGRID(
             ST_GEOMFROMEWKT('LINESTRING(-1.1115678 2.123 2.3456 1.11111,
                     4.111111 3.2374897 3.1234 1.1111, -1.11111112 2.123 2.3456 1.1111112)'),
      ST_GEOMFROMEWKT('POINT(1.12 2.22 3.2 4.4444)'),
      0.1, 0.1, 0.1, 0.01)));

+------------------------------------------------------------------------------+
|                                    EXPR1                                     |
+------------------------------------------------------------------------------+
| LINESTRING(-1.08 2.12 2.3 1.1144,4.12 3.22 3.1 1.1144,-1.08 2.12 2.3 1.1144) |
+------------------------------------------------------------------------------+

捕捉 4D 几何体,设置size为0.01,只改变 X 和 Y 的值,Z 和 M 值不变:

sql

SQL> SELECT TO_CHAR(ST_ASEWKT(ST_SNAPTOGRID(ST_GEOMFROMEWKT('LINESTRING(-1.1115678 2.123 3 2.3456,4.111111 3.2374897 3.1234 1.1111)'), 0.01)));

+---------------------------------------------------------+
|                          EXPR1                          |
+---------------------------------------------------------+
| LINESTRING(-1.11 2.12 3 2.3456,4.11 3.24 3.1234 1.1111) |
+---------------------------------------------------------+