Name

ST_SnapToGrid — 将输入几何体的所有点捕捉到规则栅格。

Synopsis

geometry ST_SnapToGrid(geometry geomA, float originX, float originY, float sizeX, float sizeY);

geometry ST_SnapToGrid(geometry geomA, float sizeX, float sizeY);

geometry ST_SnapToGrid(geometry geomA, float size);

geometry ST_SnapToGrid(geometry geomA, geometry pointOrigin, float sizeX, float sizeY, float sizeZ, float sizeM);

描述

变体1、2、3:将输入几何图形的所有点捕捉到由其原点和单元大小定义的栅格。删除落在同一单元格上的连续点,如果输出点不足以定义给定类型的几何图形,则最终返回NULL。集合中的折叠几何图形将从中剥离。对降低精度很有用。

变体4:引入了1.1.0-将输入几何图形的所有点捕捉到由其原点(第二个参数,必须是点)和单元格大小定义的栅格。指定0作为不想捕捉到栅格的任何尺寸的大小。

[Note]

返回的几何可能会失去简单性(请参见 ST_IsSimple )。

[Note]

在1.1.0版之前,该函数始终返回2D几何体。从1.1.0开始,返回的几何体将具有与输入几何体相同的维度,其尺寸值更高,保持不变。使用带有第二个几何参数的版本定义所有栅格尺寸。

可用性:1.0.0RC1

可用性:1.1.0-Z和M支持

This function supports 3d and will not drop the z-index.

示例

--Snap your geometries to a precision grid of 10^-3
UPDATE mytable
   SET geom = ST_SnapToGrid(geom, 0.001);

SELECT ST_AsText(ST_SnapToGrid(
                        ST_GeomFromText('LINESTRING(1.1115678 2.123, 4.111111 3.2374897, 4.11112 3.23748667)'),
                        0.001)
                );
                          st_astext
-------------------------------------
 LINESTRING(1.112 2.123,4.111 3.237)
 --Snap a 4d geometry
SELECT 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) );
                                                                  st_asewkt
------------------------------------------------------------------------------
 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)


--With a 4d geometry - the ST_SnapToGrid(geom,size) only touches x and y coords but keeps m and z the same
SELECT ST_AsEWKT(ST_SnapToGrid(ST_GeomFromEWKT('LINESTRING(-1.1115678 2.123 3 2.3456,
                4.111111 3.2374897 3.1234 1.1111)'),
           0.01)      );
                                                st_asewkt
---------------------------------------------------------
 LINESTRING(-1.11 2.12 3 2.3456,4.11 3.24 3.1234 1.1111)

                

另请参阅

ST_Snap, ST_AsEWKT, ST_AsText, ST_GeomFromText, ST_GeomFromEWKT, ST_Simplify