Name

ST_Scale — Skaliert eine Geometrie um bestimmte Faktoren.

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

Beschreibung

Skaliert die Geometrie auf eine neue Größe, indem die Ordinaten mit den entsprechenden Faktorparametern multipliziert werden.

Die Version, die eine Geometrie als factor Parameter nimmt, erlaubt die Übergabe eines 2d, 3dm, 3dz oder 4d Punktes, um den Skalierungsfaktor für alle unterstützten Dimensionen zu setzen. Fehlende Dimensionen im factor Punkt sind gleichbedeutend mit keiner Skalierung der entsprechenden Dimension.

Bei der Variante mit drei Geometrien kann ein "falscher Ursprung" für die Skalierung übergeben werden. Dies ermöglicht eine "Skalierung an Ort und Stelle", z. B. unter Verwendung des Schwerpunkts der Geometrie als falscher Ursprung. Ohne einen falschen Ursprung erfolgt die Skalierung relativ zum tatsächlichen Ursprung, so dass alle Koordinaten einfach mit dem Skalierungsfaktor multipliziert werden.

[Note]

Vor 1.3.4 ist diese Funktion abgestürzt, wenn die Geometrien CURVES enthalten. Dies wurde mit 1.3.4+ behoben

Verfügbarkeit: 1.1.0.

Erweiterung: Mit 2.0.0 wurde die Unterstützung für polyedrische Oberflächen, Dreiecke und TIN eingeführt.

Verbessert: In Version 2.2.0 wurde die Unterstützung für die Skalierung aller Dimensionen (Parameterfactor ) eingeführt.

Verbessert: In Version 2.5.0 wurde die Unterstützung für die Skalierung relativ zu einem lokalen Ursprung (Parameterorigin ) eingeführt.

Diese Funktion unterstützt polyedrische Flächen.

Diese Funktion unterstützt 3d und lässt den Z-Index nicht fallen.

Diese Methode unterstützt kreisförmige Strings und Kurven.

Diese Funktion unterstützt Dreiecke und dreieckige unregelmäßige Netzoberflächen (TIN).

Diese Funktion unterstützt M-Koordinaten.

Beispiele

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

Siehe auch

ST_Affine, ST_TransScale