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