All Products
Search
Document Center

ApsaraDB RDS:ST_Collect

Last Updated:Mar 29, 2026

Mengumpulkan objek geometry menjadi tipe MULTI\* atau GeometryCollection, tergantung pada apakah objek geometry input homogen (memiliki tipe yang sama) atau heterogen (memiliki tipe berbeda).

Sintaksis

geometry ST_Collect(geometry g1, geometry g2);
geometry ST_Collect(geometry[] g1Array);
geometry ST_Collect(geometry set g1Field);

Parameter

ParameterDeskripsi
g1Objek geometry pertama.
g2Objek geometry kedua.
g1ArrayArray berisi objek geometry.
g1FieldBidang berisi objek geometry dari suatu set data, digunakan saat memanggil ST_Collect sebagai fungsi agregat.

Catatan penggunaan

ST_Collect memiliki tiga varian:

  • Varian 1 — dua input (g1, g2): Menggabungkan dua objek geometry. Mengembalikan tipe MULTI\* jika kedua input memiliki tipe geometry yang sama, atau GeometryCollection jika tipenya berbeda.

  • Varian 2 — array (g1Array): Menggabungkan array objek geometry menjadi satu koleksi.

  • Varian 3 — agregat (g1Field): Berperilaku sebagai fungsi agregat, mengumpulkan semua objek geometry dari suatu rowset menjadi satu objek geometry.

ST_Collect mendukung objek CircularString dan Curve, tetapi mungkin tidak selalu mengembalikan tipe MultiCurve atau MULTI\* yang diharapkan dalam semua kasus.

Jika salah satu input merupakan tipe koleksi (MULTI\* atau GeometryCollection), ST_Collect akan mengembalikan GeometryCollection, bukan tipe MULTI\* yang rata (flat). Untuk mencegah hal ini, gunakan ST_Dump dalam subkueri untuk mengekspansi koleksi input menjadi elemen-elemen atomiknya sebelum memanggil ST_Collect.

ST_Collect vs. ST_Union

Kedua fungsi ini menggabungkan objek geometry, tetapi memiliki perilaku yang berbeda:

PerilakuST_CollectST_Union
Menghapus batasanTidakYa
Penanganan LineStringMengembalikan MultiLineStringMemecah pada perpotongan node
Tipe kembalianMULTI\* atau GeometryCollectionDapat mengembalikan geometry simple
KinerjaLebih cepatLebih lambat

Gunakan ST_Collect untuk mengelompokkan geometri tanpa menggabungkan batas-batasnya. Gunakan ST_Union ketika Anda memerlukan geometri yang dilebur menjadi satu geometri terpadu.

Contoh

Varian 1: Dua input

Mengumpulkan dua titik dengan tipe yang sama — mengembalikan MULTIPOINT:

SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'POINT(0 1)'::geometry));

Hasil:

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

Mengumpulkan geometri dengan tipe berbeda — mengembalikan GeometryCollection:

SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'LINESTRING(0 2,0 3)'::geometry));

Hasil:

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

Varian 3: Agregat

Mengumpulkan semua titik dari subkueri menjadi satu MULTIPOINT:

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;

Hasil:

                               st_astext
----------------------------------------------------------------
 MULTIPOINT(1 0,0.707106781186548 -0.707106781186547,0 -1,-0.70
 7106781186546 -0.707106781186549,-1 0,-0.70710678118655 0.70710
 6781186545,0 1,0.707106781186544 0.707106781186551,1 0)
(1 row)

Lihat juga