ST_SnapToGrid — 入力ジオメトリの全てのポイントを原点とセルサイズを定めたグリッドにスナップします.同じセルに落ちた,連続するポイントを削除します.引数ジオメトリのジオメトリタイプを定義できないポイントしか残らなかった場合は,NULLを返します.コレクション内で崩壊したジオメトリはそこから削除されます.精度を落とすのに便利です.
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を指定します.
![]() | |
返されるジオメトリは単純性を失う可能性があります(ST_IsSimpleを参照して下さい). |
![]() | |
1.1.0版より前では,この関数は常に2次元ジオメトリを返しました. 1.1.0版からは,返されるジオメトリの次元数は,入力値のうちで手のつけられていない最大の次元と同じになります.全てのグリッドの次元を定義するには,第2引数にジオメトリを取る形式を使って下さい. |
初出バージョン: 1.0.0RC1
初出バージョン: 1.1.0 - ZとMのサポート
この関数は三次元をサポートします.Zインデクスを削除しません.
--10^-3の精度のグリッドにジオメトリをスナップ
UPDATE mytable
SET the_geom = ST_SnapToGrid(the_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)
--四次元ジオメトリをスナップ
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)
--四次元ジオメトリ - ST_SnapToGrid(geom,size)を使い,X, Y座標だけに手を付けM, Z座標は変更しない
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)