Namn

ST_ReducePrecision — Returnerar en giltig geometri med punkter som avrundats till en rutnätstolerans.

Synopsis

geometry ST_ReducePrecision(geometry g, float8 gridsize);

Beskrivning

Returnerar en giltig geometri där alla punkter har avrundats till den angivna rutnätstoleransen och där objekt under toleransen har tagits bort.

Till skillnad från ST_SnapToGrid kommer den returnerade geometrin att vara giltig, utan självskärande ringar eller kollapsade komponenter.

Precisionsreduktion kan användas för att:

  • matcha koordinatprecisionen med datanoggrannheten

  • minska antalet koordinater som behövs för att representera en geometri

  • säkerställa giltig geometriutdata till format som använder lägre precision (t.ex. textformat som WKT, GeoJSON eller KML när antalet decimaler i utdata är begränsat).

  • exportera giltig geometri till system som använder lägre eller begränsad precision (t.ex. SDE, Oracle toleransvärde)

Tillgänglighet: 3.1.0.

Kräver GEOS >= 3.9.0.

Exempel

Code
SELECT ST_ReducePrecision('POINT(1.412 19.323)', 0.1);
Rasterutdata
POINT(1.4 19.3)
Figure
Geometry figure for visual-st-reduceprecision-01
Code
SELECT ST_ReducePrecision('POINT(1.412 19.323)', 1.0);
Rasterutdata
POINT(1 19)
Figure
Geometry figure for visual-st-reduceprecision-02
Code
SELECT ST_ReducePrecision('POINT(1.412 19.323)', 10);
Rasterutdata
POINT(0 20)
Figure
Geometry figure for visual-st-reduceprecision-03

Precisionsreducering kan minska antalet toppar

Code
SELECT ST_ReducePrecision('LINESTRING (10 10,19.6 30.1,20 30,20.3 30,40 40)', 1);
Rasterutdata
LINESTRING (10 10, 20 30, 40 40)
Figure
Geometry figure for visual-st-reduceprecision-04

Precisionsreducering delar upp polygoner om det behövs för att säkerställa validitet

Code
WITH data(geom) AS (
  VALUES ('POLYGON ((10 10,60 60.1,70 30,40 40,50 10,10 10))'::geometry)
)
SELECT geom AS input,
       ST_ReducePrecision(geom, 10) AS reduced
FROM data;
Rasterutdata
-[ RECORD 1 ]------------------------------------------------
input   | POLYGON((10 10,60 60.1,70 30,40 40,50 10,10 10))
reduced | MULTIPOLYGON(((10 10,40 40,50 10,10 10)),((40 40,60 60,70 30,40 40)))
Figure
Geometry figure for visual-st-reduceprecision-05