对目标Geometry对象执行三维仿射变换,可同时完成平移、旋转、缩放等操作。
语法
geometry  ST_Affine(geometry  geomA , float  a , float  b , float  c , float  d , float  e , float  f , float  g , float  h , float  i , float  xoff , float  yoff , float  zoff);
geometry  ST_Affine(geometry  geomA , float  a , float  b , float  d , float  e , float  xoff , float  yoff);参数
| 参数名称 | 描述 | 
|---|---|
| geomA | 目标Geometry对象。 | 
| a | 仿射变换参数。 | 
| b | 仿射变换参数。 | 
| c | 仿射变换参数。 | 
| d | 仿射变换参数。 | 
| e | 仿射变换参数。 | 
| f | 仿射变换参数。 | 
| g | 仿射变换参数。 | 
| h | 仿射变换参数。 | 
| i | 仿射变换参数。 | 
| xoff | 仿射变换参数。 | 
| yoff | 仿射变换参数。 | 
| zoff | 仿射变换参数。 | 
描述
- 对于ST_Affine(geom, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)形式,代表如下变换矩阵:/ a b c xoff \ | d e f yoff | | g h i zoff | \ 0 0 0 1 /
- 顶点坐标的变换如下(所有的转换和缩放函数都通过这样的仿射变换来表示):x' = a*x + b*y + c*z + xoff y' = d*x + e*y + f*z + yoff z' = g*x + h*y + i*z + zoff
- 对于ST_Affine(geom, a, b, d, e, xoff, yoff)形式,代表如下变换矩阵:/ a b 0 xoff \ / a b xoff \ | d e 0 yoff | rsp. | d e yoff | | 0 0 1 0 | \ 0 0 1 / \ 0 0 0 1 /
- 顶点坐标的变换如下:x' = a*x + b*y + xoff y' = d*x + e*y + yoff z' = z本形式是3D模式的子模式。 
- 该函数支持Circular Strings、Curves、Polyhedral surfaces、Triangles、Triangulated Irregular Network Surfaces(TIN)和3D对象。
示例
在X轴,Y轴,Z轴同时180度翻转一个点:
               SELECT ST_AsEWKT(ST_Affine(ST_GeomFromEWKT('POINT(1 2 3)'),
                           cos(pi()), -sin(pi()), 0, sin(pi()), cos(pi()), -sin(pi()), 0, sin(pi()), cos(pi()), 0, 0, 0));
    st_asewkt
-----------------
 POINT(-1 -2 -3)
(1 row)