通过将坐标乘以相应的缩放因子,将Geometry对象缩放为新的大小。

语法

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

参数

参数名称 描述
geomA/geom 目标Geometry对象。
xFactor X因子。
yFactor Y因子。
zFactor Z因子。
factor 缩放对象。
origin 缩放原点。

描述

  • 允许factor对象传入2d,3dm,3dz或4d的Point对象以设置所有支持维度的缩放比例因子。缺失的维度将视为不进行缩放。
  • 该函数支持Circular Strings、Curves、Polyhedral surfaces、Triangles、Triangulated Irregular Network Surfaces(TIN)和3D对象。
  • 该函数支持带有M值的对象。
  • 当传入缩放原点时,允许就地缩放。例如,使用Geometry的质心作为缩放原点。如果不设置缩放原点,则相对于实际原点进行缩放,因此所有坐标仅乘以缩放因子。

示例

  • 默认调用:
    SELECT ST_AsText(ST_Scale('LINESTRING(2 1,1 1)'::geometry,2,2));
          st_astext
    ---------------------
     LINESTRING(4 2,2 2)
    (1 row)
  • 使用缩放对象:
    SELECT ST_AsText(ST_Scale('LINESTRING(2 1,1 1)'::geometry,'POINT(2 2)'::geometry));
          st_astext
    ---------------------
     LINESTRING(4 2,2 2)
    (1 row)
                        
  • 使用缩放原点的效果对比:
    SELECT
        ST_Scale(g,factor),
      ST_Scale(g,factor,'POINT(2 1)'::geometry),g
      from (select 'LINESTRING(2 1,1 1,1 2)'::geometry as g,'POINT(3 3)'::geometry as factor) as t;
1