ST_Rotate

将一个几何对象逆时针旋转指定的角度。

语法

geometry ST_Rotate(geometry geomA , float rotRadians);
geometry ST_Rotate(geometry geomA , float rotRadians , float x0 , float y0);
geometry ST_Rotate(geometry geomA , float rotRadians , geometry pointOrigin);

参数

参数名称

描述

geomA

目标Geometry对象。

rotRadians

旋转的弧度。

x0

旋转原点的X坐标。

y0

旋转原点的Y坐标。

pointOrigin

作为旋转原点的Point对象。

描述

  • 若不指定旋转原点,则以Point(0,0)作为旋转原点。

  • 该函数支持Circular StringsCurvesPolyhedral surfacesTrianglesTriangulated Irregular Network Surfaces(TIN)和3D对象。

示例

  • 旋转180度:

    SELECT ST_AsEWKT(ST_Rotate('LINESTRING (1 2,2 2)'::geometry, pi()));
            st_asewkt
    -------------------------
     LINESTRING(-1 -2,-2 -2)
    (1 row)
                        
    旋转180度
  • 以(-1,-1)为旋转原点,逆时针旋转30度:

    SELECT ST_AsEWKT(ST_Rotate('LINESTRING (1 2,2 2)'::geometry, pi()/6,-1,-1));
                               st_asewkt
    ---------------------------------------------------------------
     LINESTRING(-0.767949192431122 2.59807621135332,0.098076211353.
    .316 3.09807621135332)
    (1 row)
                        
    2
  • 以中心点为旋转原点,顺时针旋转30度:

    SELECT ST_AsEWKT(ST_Rotate('LINESTRING (1 2,2 2)'::geometry, pi()/6,ST_Centroid('LINESTRING (1 2,2 2)'::geometry)));
                            st_asewkt
    ---------------------------------------------------------
     LINESTRING(1.06698729810778 1.75,1.93301270189222 2.25)
    (1 row)
                        
    2