ST_Scale — Scales a geometry by given factors.
geometry ST_Scale(
geometry geomA, float XFactor, float YFactor, float ZFactor)
;
geometry ST_Scale(
geometry geomA, float XFactor, float YFactor)
;
geometry ST_Scale(
geometry geom, geometry factor)
;
geometry ST_Scale(
geometry geom, geometry factor, geometry origin)
;
Scales the geometry to a new size by multiplying the ordinates with the corresponding factor parameters.
The version taking a geometry as the factor
parameter allows passing a 2d, 3dm, 3dz or 4d point to set scaling factor for all supported dimensions. Missing dimensions in the factor
point are equivalent to no scaling the corresponding dimension.
The three-geometry variant allows a "false origin" for the scaling to be passed in. This allows "scaling in place", for example using the centroid of the geometry as the false origin. Without a false origin, scaling takes place relative to the actual origin, so all coordinates are just multiplied by the scale factor.
Anteriores a 1.3.4, essa função falha se usada com geometrias que contêm CURVAS. Isso é consertado em 1.3.4+ |
Availability: 1.1.0.
Melhorias: 2.0.0 suporte para superfícies poliédricas, triângulos e TIN introduzido.
Enhanced: 2.2.0 support for scaling all dimension (factor
parameter) was introduced.
Enhanced: 2.5.0 support for scaling relative to a local origin (origin
parameter) was introduced.
This function supports Polyhedral surfaces.
This function supports 3d and will not drop the z-index.
This method supports Circular Strings and Curves.
This function supports Triangles and Triangulated Irregular Network Surfaces (TIN).
This function supports M coordinates.
--Version 1: scale X, Y, Z SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3, 1 1 1)'), 0.5, 0.75, 0.8)); st_asewkt -------------------------------------- LINESTRING(0.5 1.5 2.4,0.5 0.75 0.8) --Version 2: Scale X Y SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3, 1 1 1)'), 0.5, 0.75)); st_asewkt ---------------------------------- LINESTRING(0.5 1.5 3,0.5 0.75 1) --Version 3: Scale X Y Z M SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3 4, 1 1 1 1)'), ST_MakePoint(0.5, 0.75, 2, -1))); st_asewkt ---------------------------------------- LINESTRING(0.5 1.5 6 -4,0.5 0.75 2 -1) --Version 4: Scale X Y using false origin SELECT ST_AsText(ST_Scale('LINESTRING(1 1, 2 2)', 'POINT(2 2)', 'POINT(1 1)'::geometry)); st_astext --------------------- LINESTRING(1 1,3 3)