名稱

ST_Scale — 使用給定的因子縮放幾何圖形。

概要

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

描述

透過將座標值乘以相應的因子參數,將幾何圖形縮放至新的尺寸。

使用幾何圖形作為 factor 參數的版本,允許傳遞 2d、3dm、3dz 或 4d 點,以設定所有支援維度的縮放因子。 factor 點中缺少的維度相當於不縮放相應的維度。

三幾何圖形變體允許傳遞用於縮放的「偽原點」。這允許「原地縮放」,例如使用幾何圖形的質心作為偽原點。如果沒有偽原點,縮放將相對於實際原點發生,因此所有坐標都只乘以縮放因子。

[Note]

在 1.3.4 之前的版本中,如果與包含 CURVES 的幾何圖形一起使用,此函數會崩潰。這在 1.3.4+ 中已修復。

可用性:1.1.0。

增強功能:引入了 2.0.0 對多面體表面、三角形和 TIN 的支持。

增強功能:引入了 2.2.0 對縮放所有維度(factor 參數)的支持。

增強功能:引入了 2.5.0 對相對於局部原點縮放(origin 參數)的支持。

此函數支援多面體表面。

此函數支援 3d,且不會丟棄 z 索引。

此方法支援圓形字串和曲線。

此函數支援三角形和三角不規則網路表面 (TIN)。

此函數支援 M 座標。

範例

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

另請參閱

ST_Affine, ST_TransScale