Topik ini menjelaskan fungsi ST_Collect, yang mengembalikan objek geometri yang mewakili kumpulan objek geometri input.
Sintaksis
geometry ST_Collect(geometry set g1Field);
geometry ST_Collect(geometry g1 , geometry g2);
geometry ST_Collect(geometry[] g1Array);Parameter
| Parameter | Deskripsi |
| g1Field | Bidang objek geometri yang ingin Anda tentukan dalam dataset. |
| g1 | Objek geometri pertama yang ingin Anda tentukan. |
| g2 | Objek geometri kedua yang ingin Anda tentukan. |
| g1Array | Sebuah larik yang terdiri dari objek geometri yang ingin Anda tentukan. |
Deskripsi
- Fungsi ST_Collect mengembalikan objek MULTI atau GeometryCollection. Fungsi ini memiliki dua versi:
- Versi 1: Input berupa dua objek geometri. Fungsi ini mengembalikan objek MULTI atau GeometryCollection.
- Versi 2: Berfungsi sebagai fungsi agregat dengan input berupa kumpulan objek geometri. Mengembalikan objek geometri hasil dari fungsi ST_Geometry.
- Fungsi ST_Collect mendukung objek CircularString dan Curve, namun mungkin tidak mengembalikan objek MultiCurve atau MULTI sesuai harapan.
- Fungsi ST_Collect dan ST_Union dapat saling dipertukarkan. ST_Collect mengembalikan objek MULTI atau GeometryCollection, sedangkan ST_Union mengembalikan objek geometri karena melarutkan batas objek geometri input. ST_Union juga membagi objek LineString di persimpangan node, sementara ST_Collect hanya mengembalikan objek MultiLineString.
- Umumnya, ST_Collect lebih cepat daripada ST_Union karena ST_Union melarutkan batas objek geometri atau memeriksa apakah objek MultiPolygon yang dibuat memiliki bagian yang berpotongan. ST_Collect mengumpulkan objek geometri menjadi objek MULTI atau menggabungkan objek MULTI menjadi GeometryCollection.
- Anda dapat menggunakan fungsi ST_Dump untuk mengonversi objek MULTI menjadi objek geometri, lalu menentukan objek tersebut ke ST_Collect. Ini mencegah ST_Collect mengembalikan objek GeometryCollection untuk objek MULTI.
Contoh
- Jalankan pernyataan berikut untuk mengembalikan objek MULTI:
SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'POINT(0 1)'::geometry)); st_astext --------------------- MULTIPOINT(0 0,0 1) (1 baris) - Jalankan pernyataan berikut untuk mengembalikan objek GeometryCollection:
SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'LINESTRING(0 2,0 3)'::geometry)); st_astext ---------------------------------------------------- GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 2,0 3)) (1 baris) - Jalankan pernyataan berikut untuk mengagregasi dataset input:
select ST_AsText(ST_Collect(t.geom)) from (select (ST_DumpPoints(st_buffer('POINT(0 0)'::geometry,1,'quad_segs=2'))).geom as geom) as t; st_astext ---------------------------------------------------------------- MULTIPOINT(1 0,0.707106781186548 -0.707106781186547,0 -1,-0.70. .7106781186546 -0.707106781186549,-1 0,-0.70710678118655 0.7071. .06781186545,0 1,0.707106781186544 0.707106781186551,1 0) (1 baris)