GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.16. التحويلات التآلفية (Affine)
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_Scale

الصفحة الأصلية بالإنجليزية postgis.net ↗

الاسم

ST_Scale — تغيّر مقياس شكل هندسي بمعاملات معيّنة.

المختصر

geometry ST_Scale(geometry geomA, float XFactor, float YFactor, float ZFactor);

geometry ST_Scale(geometry geomA, float XFactor, float YFactor);

geometry ST_Scale(geometry geom, geometry factor);

geometry ST_Scale(geometry geom, geometry factor, geometry origin);

الوصف

تغيّر حجم الشكل الهندسي بضرب الإحداثيات في معاملات المقياس المقابلة.

تسمح النسخة التي تأخذ شكلًا هندسيًا للمعامل factor بتمرير نقطة 2d أو 3dm أو 3dz أو 4d لتعيين معامل المقياس لجميع الأبعاد المدعومة. الأبعاد المفقودة في النقطة factor تعادل عدم تغيير مقياس البعد المقابل.

تسمح النسخة ذات الأشكال الهندسية الثلاثة بتمرير "أصل زائف" لتغيير المقياس. وهذا يتيح "تغيير المقياس في الموضع"، مثلًا باستخدام مركز ثقل الشكل الهندسي أصلًا زائفًا. بدون أصل زائف، يتم تغيير المقياس نسبةً إلى الأصل الفعلي، فتُضرب جميع الإحداثيات ببساطة في معامل المقياس.

[ملاحظة]

قبل الإصدار 1.3.4، كانت هذه الدالة تتعطل إذا استُخدمت مع أشكال هندسية تحتوي على منحنيات (CURVES). وقد أُصلح ذلك في 1.3.4 وما بعده

متاحة منذ: 1.1.0.

حُسّنت في: 2.0.0 أُضيف دعم الأسطح متعددة الوجوه والمثلثات وTIN.

حُسّنت في: 2.2.0 أُضيف دعم تغيير مقياس جميع الأبعاد (المعامل factor).

حُسّنت في: 2.5.0 أُضيف دعم تغيير المقياس نسبةً إلى أصل محلي (المعامل origin).

تدعم هذه الدالة الأسطح متعددة الوجوه (Polyhedral surfaces).

تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.

تدعم هذه الدالة الأقواس الدائرية (Circular Strings) والمنحنيات.

تدعم هذه الدالة المثلثات وأسطح الشبكات المثلثية غير المنتظمة (TIN).

تدعم هذه الدالة إحداثيات M.

أمثلة

--Version 1: scale X, Y, Z
SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3, 1 1 1)'), 0.5, 0.75, 0.8));
                          st_asewkt
--------------------------------------
 LINESTRING(0.5 1.5 2.4,0.5 0.75 0.8)

--Version 2: Scale X Y
 SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3, 1 1 1)'), 0.5, 0.75));
                        st_asewkt
----------------------------------
 LINESTRING(0.5 1.5 3,0.5 0.75 1)

--Version 3: Scale X Y Z M
 SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3 4, 1 1 1 1)'),
   ST_MakePoint(0.5, 0.75, 2, -1)));
                               st_asewkt
----------------------------------------
 LINESTRING(0.5 1.5 6 -4,0.5 0.75 2 -1)

--Version 4: Scale X Y using false origin
SELECT ST_AsText(ST_Scale('LINESTRING(1 1, 2 2)', 'POINT(2 2)', 'POINT(1 1)'::geometry));
      st_astext
---------------------
 LINESTRING(1 1,3 3)

انظر أيضًا

ST_Affine, ST_TransScale