ST_Scale

通过将坐标乘以相应的缩放因子,将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