Name

ST_Scale — Met à l'échelle une géométrie en fonction de facteurs donnés.

Synopsis

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

Description

Met la géométrie à l'échelle en multipliant les ordonnées par les paramètres factor correspondants.

La version prenant une géométrie comme paramètre factor permet de passer un point 2d, 3dm, 3dz ou 4d pour définir le facteur d'échelle pour toutes les dimensions prises en charge. Les dimensions manquantes dans le point factor sont équivalentes à l'absence de mise à l'échelle de la dimension correspondante.

La variante à trois géométries permet de transmettre une "fausse origine" pour la mise à l'échelle. Cela permet une "mise à l'échelle sur place", par exemple en utilisant le centroïde de la géométrie comme fausse origine. Sans fausse origine, la mise à l'échelle s'effectue par rapport à l'origine réelle, de sorte que toutes les coordonnées sont simplement multipliées par le facteur d'échelle.

[Note]

Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce problème est corrigé dans la version 1.3.4+

Disponibilité : 1.1.0.

Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques.

Amélioration : La prise en charge de la mise à l'échelle de toutes les dimensions (paramètre factor) a été introduite dans la version 2.2.0.

Amélioration : la prise en charge de la mise à l'échelle par rapport à une origine locale (paramètre origin) a été introduite dans la version 2.5.0.

Cette fonction prend en charge les surfaces Polyhedral.

Cette fonction prend en charge la 3D et ne supprime pas l'indice z.

Cette méthode prend en charge les types Circular String et Curve.

Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).

Cette fonction prend en charge les coordonnées M.

Exemples

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

Voir aussi

ST_Affine, ST_TransScale