名稱

ST_ReducePrecision — 返回一個有效的幾何圖形,其點會四捨五入到網格容差。

概要

geometry ST_ReducePrecision(geometry g, float8 gridsize);

描述

返回一個有效的幾何圖形,其中所有點都四捨五入到提供的網格容差,並移除低於容差的特徵。

ST_SnapToGrid 不同,返回的幾何圖形將是有效的,沒有環自相交或崩潰的組件。

精度降低可用於:

  • 將坐標精度與數據準確性匹配

  • 減少表示幾何圖形所需的坐標數量

  • 確保輸出到使用較低精度的格式的有效幾何圖形(例如,當輸出小數位數有限時,例如 WKT、GeoJSON 或 KML 等文字格式)。

  • 將有效的幾何圖形匯出到使用較低或有限精度的系統(例如,SDE、Oracle 容差值)

可用性:3.1.0。

需要 GEOS >= 3.9.0。

範例

SELECT ST_AsText(ST_ReducePrecision('POINT(1.412 19.323)', 0.1));
    st_astext
-----------------
 POINT(1.4 19.3)

SELECT ST_AsText(ST_ReducePrecision('POINT(1.412 19.323)', 1.0));
  st_astext
-------------
 POINT(1 19)

SELECT ST_AsText(ST_ReducePrecision('POINT(1.412 19.323)', 10));
  st_astext
-------------
 POINT(0 20)

精度降低可以減少頂點數量

SELECT ST_AsText(ST_ReducePrecision('LINESTRING (10 10, 19.6 30.1, 20 30, 20.3 30, 40 40)', 1));
  st_astext
-------------
 LINESTRING (10 10, 20 30, 40 40)

如果需要確保有效性,精度降低會分割多邊形

SELECT ST_AsText(ST_ReducePrecision('POLYGON ((10 10, 60 60.1, 70 30, 40 40, 50 10, 10 10))', 10));
  st_astext
-------------
 MULTIPOLYGON (((60 60, 70 30, 40 40, 60 60)), ((40 40, 50 10, 10 10, 40 40)))