名稱

ST_SnapToGrid — 將輸入幾何的所有點對齊到規則格網。

概要

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

此函數支援 3D,且不會丟棄 z 索引。

範例

--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)