名稱

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

描述

將幾何圖形以逆時針方向繞著原點旋轉 rotRadians 弧度。旋轉原點可以指定為 POINT 幾何圖形,或以 x 和 y 坐標指定。如果沒有指定原點,則幾何圖形將繞 POINT(0 0) 旋轉。

增強功能:2.0.0 版本引入了對多面體表面、三角形和 TIN 的支援。

增強功能:2.0.0 版本新增了用於指定旋轉原點的額外參數。

可用性:1.1.2 版本。在 1.2.2 版本中,名稱從 Rotate 變更為 ST_Rotate。

此函數支援 3D,並且不會捨棄 z 索引。

此方法支援圓弧字串和曲線。

此函數支援多面體表面。

此函數支援三角形和不規則三角網格表面 (TIN)。

範例

--Rotate 180 degrees
SELECT ST_AsEWKT(ST_Rotate('LINESTRING (50 160, 50 50, 100 50)', pi()));
               st_asewkt
---------------------------------------
 LINESTRING(-50 -160,-50 -50,-100 -50)
(1 row)

--Rotate 30 degrees counter-clockwise at x=50, y=160
SELECT ST_AsEWKT(ST_Rotate('LINESTRING (50 160, 50 50, 100 50)', pi()/6, 50, 160));
                                 st_asewkt
---------------------------------------------------------------------------
 LINESTRING(50 160,105 64.7372055837117,148.301270189222 89.7372055837117)
(1 row)

--Rotate 60 degrees clockwise from centroid
SELECT ST_AsEWKT(ST_Rotate(geom, -pi()/3, ST_Centroid(geom)))
FROM (SELECT 'LINESTRING (50 160, 50 50, 100 50)'::geometry AS geom) AS foo;
                           st_asewkt
--------------------------------------------------------------
 LINESTRING(116.4225 130.6721,21.1597 75.6721,46.1597 32.3708)
(1 row)