الاسم
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