ST_Kumpulkan - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

ST_Kumpulkan

ST_Collect memiliki dua varian. Satu menerima dua geometri, dan satu menerima ekspresi agregat.

Varian pertama ST_Collect menciptakan geometri dari geometri input. Urutan geometri input dipertahankan. Varian ini berfungsi sebagai berikut:

  • Jika kedua geometri input adalah titik, maka a MULTIPOINT dengan dua titik dikembalikan.

  • Jika kedua geometri input adalah garis garis, maka a MULTILINESTRING dengan dua garis dikembalikan.

  • Jika kedua geometri input adalah poligon, maka a MULTIPOLYGON dengan dua poligon dikembalikan.

  • Jika tidak, a GEOMETRYCOLLECTION dengan dua geometri input dikembalikan.

Varian kedua dari ST_Collect menciptakan geometri dari geometri dalam kolom geometri. Tidak ada urutan pengembalian geometri yang ditentukan. Tentukan klausa WITHIN GROUP (ORDER BY...) untuk menentukan urutan geometri yang dikembalikan. Varian ini berfungsi sebagai berikut:

  • Jika semua baris non-Null dalam ekspresi agregat input adalah poin, maka multipoint yang berisi semua titik dalam ekspresi agregat dikembalikan.

  • Jika semua baris non-Null dalam ekspresi agregat adalah linestring, maka multilinestring yang berisi semua linestring dalam ekspresi agregat dikembalikan.

  • Jika semua baris non-Null dalam ekspresi agregat adalah poligon, hasilnya adalah multipoligon yang berisi semua poligon dalam ekspresi agregat dikembalikan.

  • Jika tidak, a GEOMETRYCOLLECTION yang berisi semua geometri dalam ekspresi agregat dikembalikan.

ST_Collect mengembalikan geometri dari dimensi yang sama dengan geometri masukan. Semua geometri input harus memiliki dimensi yang sama.

Sintaks

ST_Collect(geom1, geom2)
ST_Collect(aggregate_expression) [WITHIN GROUP (ORDER BY sort_expression1 [ASC | DESC] [, sort_expression2 [ASC | DESC] ...])]

Argumen

geom1

Nilai tipe data GEOMETRY atau ekspresi yang mengevaluasi GEOMETRY tipe.

geom2

Nilai tipe data GEOMETRY atau ekspresi yang mengevaluasi GEOMETRY tipe.

aggregate_expression

Kolom tipe data GEOMETRY atau ekspresi yang mengevaluasi GEOMETRY tipe.

[DALAM KELOMPOK (PESANAN OLEH sort_expression1 [ASC | DESC] [, sort_expression2 [ASC | DESC]...])]

Sebuah klausa opsional yang menentukan urutan dari nilai agregat. Klausa ORDER BY berisi daftar ekspresi pengurutan. Ekspresi sortir adalah ekspresi yang mirip dengan ekspresi pengurutan yang valid dalam daftar pilih kueri, seperti nama kolom. Anda dapat menentukan urutan ascending (ASC) atau descending (DESC). Nilai default-nya ASC.

Jenis pengembalian

GEOMETRYdari subtipeMULTIPOINT,, MULTILINESTRINGMULTIPOLYGON, atauGEOMETRYCOLLECTION.

Nilai pengidentifikasi sistem referensi spasial (SRID) dari geometri yang dikembalikan adalah nilai SRID dari geometri input.

Jika kedua geom1 atau geom2 adalah nol, maka null dikembalikan.

Jika semua baris aggregate_expression adalah null, maka null dikembalikan.

Jika geom1 adalah nol, maka salinan geom2 dikembalikan. Demikian juga, jika geom2 adalah nol, maka salinan geom1 dikembalikan.

Jika geom1 dan geom2 memiliki nilai SRID yang berbeda, maka kesalahan dikembalikan.

Jika dua geometri dalam aggregate_expression memiliki nilai SRID yang berbeda, maka kesalahan dikembalikan.

Jika geometri yang dikembalikan lebih besar dari ukuran maksimum aGEOMETRY, maka kesalahan dikembalikan.

Jika geom1 dan geom2 memiliki dimensi yang berbeda, maka kesalahan dikembalikan.

Jika dua geometri dalam aggregate_expression memiliki dimensi yang berbeda, maka kesalahan dikembalikan.

Contoh

SQL berikut mengembalikan koleksi geometri yang berisi dua geometri input.

SELECT ST_AsText(ST_Collect(ST_GeomFromText('LINESTRING(0 0,1 1)'), ST_GeomFromText('POLYGON((10 10,20 10,10 20,10 10))')));
st_astext ----------- GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),POLYGON((10 10,20 10,10 20,10 10)))

SQL berikut mengumpulkan semua geometri dari tabel ke dalam koleksi geometri.

WITH tbl(g) AS (SELECT ST_GeomFromText('POINT(1 2)', 4326) UNION ALL SELECT ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL SELECT ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL SELECT NULL::geometry UNION ALL SELECT ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326)) SELECT ST_AsEWKT(ST_Collect(g)) FROM tbl;
st_astext ----------- SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(0 0,10 0),MULTIPOINT((13 4),(8 5),(4 4)),POLYGON((0 0,10 0,0 10,0 0)))

SQL berikut mengumpulkan semua geometri dalam tabel dikelompokkan oleh kolom id dan diurutkan oleh ID ini. Dalam contoh ini, geometri yang dihasilkan dikelompokkan berdasarkan ID sebagai berikut:

  • id 1 — poin dalam multipoint.

  • id 2 — linestrings dalam multilinestring.

  • id 3 — subtipe campuran dalam koleksi geometri.

  • id 4 — poligon dalam multipoligon.

  • id 5 — null dan hasilnya adalah null.

WITH tbl(id, g) AS (SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry) SELECT id, ST_AsEWKT(ST_Collect(g)) FROM tbl GROUP BY id ORDER BY id;
id | st_asewkt ----+----------------------------------------------------------------------------------------------------------- 1 | SRID=4326;MULTIPOINT((1 2),(4 5)) 2 | SRID=4326;MULTILINESTRING((0 0,10 0),(10 0,20 -5)) 3 | SRID=4326;GEOMETRYCOLLECTION(MULTIPOINT((13 4),(8 5),(4 4)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))) 4 | SRID=4326;MULTIPOLYGON(((0 0,10 0,0 10,0 0)),((20 20,20 30,30 20,20 20))) 5 |

SQL berikut mengumpulkan semua geometri dari tabel dalam koleksi geometri. Hasil diurutkan dalam urutan menurun menurutid, dan kemudian secara leksikografis berdasarkan koordinat x minimum dan maksimumnya.

WITH tbl(id, g) AS ( SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry) SELECT ST_AsEWKT(ST_Collect(g) WITHIN GROUP (ORDER BY id DESC, ST_XMin(g), ST_XMax(g))) FROM tbl;
st_asewkt --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SRID=4326;GEOMETRYCOLLECTION(POLYGON((0 0,10 0,0 10,0 0)),POLYGON((20 20,20 30,30 20,20 20)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5)),MULTIPOINT((13 4),(8 5),(4 4)),LINESTRING(0 0,10 0),LINESTRING(10 0,20 -5),POINT(1 2),POINT(4 5)