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

ST_CollectionHomogenize

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

الاسم

ST_CollectionHomogenize — تُعيد أبسط تمثيل لمجموعة أشكال.

المختصر

geometry ST_CollectionHomogenize(geometry collection);

الوصف

تُعيد، من مجموعة أشكال مُعطاة، التمثيل "الأبسط" لمحتوياتها.

  • تُعاد المجموعات المتجانسة (الموحّدة) في صورة الشكل المتعدد المناسب.

  • تُسطَّح المجموعات غير المتجانسة (المختلطة) في مجموعة GeometryCollection واحدة.

  • تُعاد المجموعات التي تحتوي على عنصر ذري واحد في صورة ذلك العنصر.

  • تُعاد الأشكال الذرية دون تغيير. ويمكن عند الحاجة تحويلها إلى شكل متعدد باستخدام ST_Multi.

[تنبيه]

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

متاحة منذ: 2.0.0

أمثلة

مجموعة ذات عنصر واحد محوّلة إلى شكل ذري

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0))'));

        st_astext
        ------------
        POINT(0 0)

مجموعة متداخلة ذات عنصر واحد محوّلة إلى شكل ذري:

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(MULTIPOINT((0 0)))'));

        st_astext
        ------------
        POINT(0 0)

مجموعة محوّلة إلى شكل متعدد:

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0),POINT(1 1))'));

        st_astext
        ---------------------
        MULTIPOINT((0 0),(1 1))

مجموعة غير متجانسة متداخلة مسطّحة إلى GeometryCollection:

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0), GEOMETRYCOLLECTION( LINESTRING(1 1, 2 2)))'));

        st_astext
        ---------------------
        GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1,2 2))

مجموعة مضلعات محوّلة إلى MultiPolygon (غير صالح):

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION (POLYGON ((10 50, 50 50, 50 10, 10 10, 10 50)), POLYGON ((90 50, 90 10, 50 10, 50 50, 90 50)))'));

        st_astext
        ---------------------
        MULTIPOLYGON(((10 50,50 50,50 10,10 10,10 50)),((90 50,90 10,50 10,50 50,90 50)))