全部产品
Search
文档中心

ApsaraDB RDS:ST_Collect

更新时间:Jun 25, 2025

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

ParameterDeskripsi
g1FieldBidang objek geometri yang ingin Anda tentukan dalam dataset.
g1Objek geometri pertama yang ingin Anda tentukan.
g2Objek geometri kedua yang ingin Anda tentukan.
g1ArraySebuah 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)