ST_SnapToGrid — Fäst alla punkter i indatageometrin i ett regelbundet rutnät.
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)
;
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 tillräckliga 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.
![]() |
|
Den återlämnade geometrin kan förlora sin enkelhet (se ST_IsSimple). |
![]() |
|
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.
--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)
ST_Snap, ST_AsEWKT, ST_AsText, ST_GeomFromText, ST_GeomFromEWKT, ST_Simplify