الاسم
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. تغيّر الاسم من Rotate إلى ST_Rotate في 1.2.2
تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.
تدعم هذه الدالة الأقواس الدائرية (Circular Strings) والمنحنيات.
تدعم هذه الدالة الأسطح متعددة الوجوه (Polyhedral surfaces).
تدعم هذه الدالة المثلثات وأسطح الشبكات المثلثية غير المنتظمة (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)