名称

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