ST_ROTATE
📄字数 1.0K
👁️阅读量 加载中...
功能描述
将几何体围绕原点逆时针旋转指定角度。
语法格式
sql
GEOMETRY ST_ROTATE(GEOMETRY geomA, DOUBLE rotRadians);
GEOMETRY ST_ROTATE(GEOMETRY geomA, DOUBLE rotRadians, DOUBLE x0, DOUBLE y0);
GEOMETRY ST_ROTATE(GEOMETRY geomA, DOUBLE rotRadians, GEOMETRY pointOrigin);参数说明
- geomA:目标GEOMETRY对象。
- rotRadians:旋转角度。
- pointOrigin:旋转原点POINT对象。
- x0:旋转原点X坐标。
- y0:旋转原点Y坐标。
函数返回类型
GEOMETRY类型
使用说明
- 若不指定旋转原点,则以Point(0,0)作为旋转原点。
- 该函数支持3D对象,并且不会删除Z坐标。
- 该函数支持圆形字符串(CIRCULARSTRING)、曲线(CURVES)、多面体表面(POLYHEDRALSURFACE)、三角形(TRIANGLE)、不规则三角形格网(Triangulated Irregular Network,TIN)类型几何对象。
示例
旋转180°:
sql
SQL> SELECT TO_CHAR(ST_AsEWKT(ST_Rotate('LINESTRING (50 160, 50 50, 100 50)', pi())));
+----------------------------------------------------------------------------------------------------+
| EXPR1 |
+----------------------------------------------------------------------------------------------------+
| LINESTRING(-50.00000000000002 -160,-50.00000000000001 -49.99999999999999,-100 -49.999999999999986) |
+----------------------------------------------------------------------------------------------------+围绕原点(50, 160),逆时针旋转30°:
sql
SQL> SELECT TO_CHAR(ST_AsEWKT(ST_Rotate('LINESTRING (50 160, 50 50, 100 50)', pi()/6, 50, 160)));
+-----------------------------------------------------------------------------------------------+
| EXPR1 |
+-----------------------------------------------------------------------------------------------+
| LINESTRING(50.000000000000014 160,105 64.73720558371174,148.30127018922195 89.73720558371174) |
+-----------------------------------------------------------------------------------------------+围绕质心顺时针旋转60°:
sql
SQL> SELECT TO_CHAR(ST_AsEWKT(ST_Rotate(geom, -pi()/3, ST_Centroid(geom))))
FROM (SELECT 'LINESTRING (50 160, 50 50, 100 50)'::geometry AS geom) AS foo;
+---------------------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+---------------------------------------------------------------------------------------------------------------------------+
| LINESTRING(116.42245883568916 130.67207346706593,21.15966441940092 75.67207346706591,46.15966441940092 32.37080327784398) |
+---------------------------------------------------------------------------------------------------------------------------+