Namn

ST_SnapToGrid — Fäst alla punkter i indatageometrin i ett regelbundet rutnät.

Synopsis

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

Beskrivning

Variant 1, 2, 3: Fäst alla punkter i indatageometrin i det rutnät som definieras av dess ursprung och cellstorlek. Ta bort på varandra följande punkter som faller på samma cell och returnera slutligen NULL om utdatapunkterna inte räcker för att definiera en geometri av den givna typen. Kollapsade geometrier i en samling tas bort från den. Användbart för att minska precisionen.

Variant 4: Introducerad 1.1.0 - Snappa alla punkter i indatageometrin till det rutnät som definieras av dess ursprung (det andra argumentet, måste vara en punkt) och cellstorlekar. Ange 0 som storlek för alla dimensioner som du inte vill fästa i ett rutnät.

[Notera]

Den återlämnade geometrin kan förlora sin enkelhet (se ST_IsSimple).

[Notera]

Före release 1.1.0 returnerade denna funktion alltid en 2D-geometri. Från och med 1.1.0 kommer den returnerade geometrin att ha samma dimensionalitet som den inmatade geometrin med högre dimensionsvärden orörda. Använd versionen som tar ett andra geometriargument för att definiera alla rutnätsdimensioner.

Tillgänglighet: 1.0.0RC1

Tillgänglighet: 1.1.0 - Stöd för Z och M

Denna funktion stöder 3d och kommer inte att tappa z-index.

Exempel

Snäpp en geometrikolumn till ett precisionsrutnät på 10^-3.

Kod
UPDATE mytable
   SET geom = ST_SnapToGrid(geom, 0.001);

Visa hur samma rutnätsstorlek avrundar en LineString.

Kod
SELECT ST_SnapToGrid('LINESTRING(1.1115678 2.123,4.111111 3.2374897,4.11112 3.23748667)'::geometry,
        0.001);
Utdata
LINESTRING(1.112 2.123,4.111 3.237)
Figur
Geometry figure for visual-st-snaptogrid-01

Det här exemplet snäpper en 4D-geometri.

Kod
SELECT ST_SnapToGrid('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)'::geometry,
        'POINT(1.12 2.22 3.2 4.4444)',
        0.1, 0.1, 0.1, 0.01);
Utdata
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)
Figur
Geometry figure for visual-st-snaptogrid-02

För en 4D-geometri ändrar ST_SnapToGrid(geom,size) endast x- och y-koordinaterna, medan m och z behålls oförändrade.

Kod
SELECT ST_SnapToGrid('LINESTRING(-1.1115678 2.123 3 2.3456,
        4.111111 3.2374897 3.1234 1.1111)'::geometry,
       0.01);
Utdata
LINESTRING(-1.11 2.12 3 2.3456,4.11 3.24 3.1234 1.1111)
Figur
Geometry figure for visual-st-snaptogrid-03