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

ST_Collect

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

الاسم

ST_Collect — تُنشئ مجموعة أشكال GeometryCollection أو شكلًا هندسيًا متعددًا Multi* من مجموعة أشكال هندسية.

المختصر

geometry ST_Collect(geometry g1, geometry g2);

geometry ST_Collect(geometry[] g1_array);

geometry ST_Collect(geometry set g1field);

الوصف

تجمع الأشكال الهندسية في مجموعة أشكال. تكون النتيجة إما Multi* أو GeometryCollection، بحسب ما إذا كانت الأشكال المُدخلة من النوع نفسه أو من أنواع مختلفة (متجانسة أو غير متجانسة). تبقى الأشكال المُدخلة دون تغيير داخل المجموعة.

الصيغة 1: تقبل شكلين هندسيين مُدخلين

الصيغة 2: تقبل مصفوفة من الأشكال الهندسية

الصيغة 3: دالة تجميعية تقبل مجموعة صفوف من الأشكال الهندسية.

[ملاحظة]

إذا كان أيٌّ من الأشكال المُدخلة مجموعةً (Multi* أو GeometryCollection) فإن ST_Collect تُعيد GeometryCollection (لأنه النوع الوحيد الذي يمكن أن يحتوي على مجموعات متداخلة). لمنع ذلك، استخدم ST_Dump في استعلام فرعي لتفكيك المجموعات المُدخلة إلى عناصرها الذرية (انظر المثال أدناه).

[ملاحظة]

تبدو ST_Collect وST_Union متشابهتين، لكنهما في الواقع تعملان بطريقة مختلفة تمامًا. تجمع ST_Collect الأشكال الهندسية في مجموعة دون تغييرها بأي شكل. أما ST_Union فتدمج الأشكال هندسيًا حيث تتداخل، وتقسم الخطوط عند نقاط التقاطع. وقد تُعيد أشكالًا مفردة عندما تُذيب الحدود.

متاحة منذ: 1.4.0 - أُضيفت ST_Collect(geomarray). حُسّنت ST_Collect لمعالجة عدد أكبر من الأشكال الهندسية بسرعة أكبر.

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

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

أمثلة - صيغة المُدخلين

تجميع نقاط ثنائية الأبعاد.

SELECT ST_AsText( ST_Collect( ST_GeomFromText('POINT(1 2)'),
        ST_GeomFromText('POINT(-2 3)') ));

st_astext
----------
MULTIPOINT((1 2),(-2 3))

تجميع نقاط ثلاثية الأبعاد.

SELECT ST_AsEWKT( ST_Collect( ST_GeomFromEWKT('POINT(1 2 3)'),
                ST_GeomFromEWKT('POINT(1 2 4)') ) );

                st_asewkt
-------------------------
 MULTIPOINT(1 2 3,1 2 4)
 

تجميع منحنيات.

SELECT ST_AsText( ST_Collect( 'CIRCULARSTRING(220268 150415,220227 150505,220227 150406)',
                'CIRCULARSTRING(220227 150406,2220227 150407,220227 150406)'));

                st_astext
------------------------------------------------------------------------------------
MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406),
 CIRCULARSTRING(220227 150406,2220227 150407,220227 150406))

أمثلة - صيغة المصفوفة

استخدام مُنشئ مصفوفة لاستعلام فرعي.

SELECT ST_Collect( ARRAY( SELECT geom FROM sometable ) );

استخدام مُنشئ مصفوفة لقيم.

SELECT ST_AsText(  ST_Collect(
                ARRAY[ ST_GeomFromText('LINESTRING(1 2, 3 4)'),
                        ST_GeomFromText('LINESTRING(3 4, 4 5)') ] )) As wktcollect;

--wkt collect --
MULTILINESTRING((1 2,3 4),(3 4,4 5))

أمثلة - الصيغة التجميعية

إنشاء عدة مجموعات بتجميع الأشكال الهندسية في جدول.

SELECT stusps, ST_Collect(f.geom) as geom
         FROM (SELECT stusps, (ST_Dump(geom)).geom As geom
                                FROM
                                somestatetable ) As f
        GROUP BY stusps

انظر أيضًا

ST_Dump, ST_Union