通過將坐標乘以相應的縮放因子,將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