GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.14. معالجة الأشكال الهندسية
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_Centroid

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

الاسم

ST_Centroid — تُعيد المركز الهندسي لشكل هندسي.

المختصر

geometry ST_Centroid(geometry g1);

geography ST_Centroid(geography g1, boolean use_spheroid = true);

الوصف

تحسب نقطة هي مركز الكتلة الهندسي لشكل هندسي. بالنسبة إلى [MULTI]POINT، يكون المركز هو المتوسط الحسابي للإحداثيات المُدخلة. وبالنسبة إلى [MULTI]LINESTRING، يُحسب المركز باستخدام الطول المرجّح لكل قطعة مستقيمة. وبالنسبة إلى [MULTI]POLYGON، يُحسب المركز بدلالة المساحة. إذا مُرّر شكل فارغ تُعاد GEOMETRYCOLLECTION فارغة. وإذا مُرّرت NULL تُعاد NULL. وإذا مُرّر CIRCULARSTRING أو COMPOUNDCURVE فإنهما يُحوَّلان أولاً إلى خط باستخدام CurveToLine، ثم يُعاملان كما يُعامل LINESTRING

بالنسبة إلى المُدخلات مختلطة الأبعاد، تساوي النتيجة مركز الأشكال المكوِّنة ذات البعد الأعلى (لأن الأشكال ذات الأبعاد الأدنى تُسهم بـ"وزن" صفري في المركز).

لاحظ أن مركز الأشكال المضلّعية لا يقع بالضرورة داخل المضلع. انظر مثلاً المخطط أدناه لمركز مضلع على شكل الحرف C. ولإنشاء نقطة مضمونة الوقوع داخل المضلع استخدم ST_PointOnSurface.

جديد في 2.3.0 : تدعم CIRCULARSTRING وCOMPOUNDCURVE (باستخدام CurveToLine)

متاحة منذ: 2.4.0 أُضيف دعم geography.

تطبّق هذه الدالة مواصفة OGC Simple Features Implementation Specification for SQL 1.1.

تطبّق هذه الدالة مواصفة SQL/MM. SQL-MM 3: 8.1.4, 9.5.5

أمثلة

في الرسوم التوضيحية التالية، النقطة الحمراء هي مركز الشكل المصدر.

مركز MULTIPOINT

مركز LINESTRING

مركز POLYGON

مركز GEOMETRYCOLLECTION

SELECT ST_AsText(ST_Centroid('MULTIPOINT ( -1 0, -1 2, -1 3, -1 4, -1 7, 0 1, 0 3, 1 1, 2 0, 6 0, 7 8, 9 8, 10 6 )'));
                st_astext
------------------------------------------
 POINT(2.30769230769231 3.30769230769231)
(1 row)

SELECT ST_AsText(ST_centroid(g))
FROM  ST_GeomFromText('CIRCULARSTRING(0 2, -1 1,0 0, 0.5 0, 1 0, 2 1, 1 2, 0.5 2, 0 2)')  AS g ;
------------------------------------------
POINT(0.5 1)


SELECT ST_AsText(ST_centroid(g))
FROM  ST_GeomFromText('COMPOUNDCURVE(CIRCULARSTRING(0 2, -1 1,0 0),(0 0, 0.5 0, 1 0),CIRCULARSTRING( 1 0, 2 1, 1 2),(1 2, 0.5 2, 0 2))' ) AS g;
------------------------------------------
POINT(0.5 1)