Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
ST_Collect
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 bekerja sebagai berikut:
Jika kedua geometri input adalah titik, maka a
MULTIPOINTdengan dua titik dikembalikan.Jika kedua geometri input adalah linestring, maka a
MULTILINESTRINGdengan dua linestring dikembalikan.Jika kedua geometri input adalah poligon, maka a
MULTIPOLYGONdengan dua poligon dikembalikan.Jika tidak, a
GEOMETRYCOLLECTIONdengan 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 bekerja sebagai berikut:
Jika semua baris non-null dalam ekspresi agregat masukan adalah titik, 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 yang
GEOMETRYCOLLECTIONberisi semua geometri dalam ekspresi agregat dikembalikan.
ST_Collect mengembalikan geometri dari dimensi yang sama dengan geometri input. Semua geometri input harus memiliki dimensi yang sama.
Sintaksis
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
GEOMETRYatau ekspresi yang mengevaluasi keGEOMETRYtipe. - geom2
-
Nilai tipe data
GEOMETRYatau ekspresi yang mengevaluasi keGEOMETRYtipe. - ekspresi agregat
-
Kolom tipe data
GEOMETRYatau ekspresi yang mengevaluasi keGEOMETRYtipe. - [DALAM GRUP (URUTAN DENGAN sort_expression1 [ASC | DESC] [, sort_expres sion2 [ASC | DESC]...])]
-
Klausa opsional yang menentukan urutan dari nilai agregat. Klausa ORDER BY berisi daftar ekspresi pengurutan. Ekspresi pengurutan adalah ekspresi yang mirip dengan ekspresi pengurutan yang valid dalam daftar pilih kueri, seperti nama kolom. Anda dapat menentukan urutan naik (
ASC) atau turun (DESC). Nilai default-nyaASC.
Jenis pengembalian
GEOMETRYdari subtipeMULTIPOINT,, MULTILINESTRINGMULTIPOLYGON, atauGEOMETRYCOLLECTION.
Nilai pengenal sistem referensi spasial (SRID) dari geometri yang dikembalikan adalah nilai SRID dari geometri input.
Jika geom1 atau geom2 adalah null, maka null dikembalikan.
Jika semua baris agregate_expression adalah null, maka null dikembalikan.
Jika geom1 adalah null, maka salinan geom 2 dikembalikan. Demikian juga, jika geom2 adalah null, maka salinan geom 1 dikembalikan.
Jika geom1 dan geom2 memiliki nilai SRID yang berbeda, maka kesalahan dikembalikan.
Jika dua geometri dalam agregate_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 agregate_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 — linestring 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 berdasarkanid, 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)