View a markdown version of this page

Mengkueri data spasial di Amazon Redshift - Amazon Redshift

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 yang diterbitkan pada 30 Juni 2025.

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

Mengkueri data spasial di Amazon Redshift

Data spasial menggambarkan posisi dan bentuk geometri dalam ruang yang ditentukan (sistem referensi spasial). Amazon Redshift mendukung data spasial dengan tipe GEOGRAPHY data GEOMETRY dan, yang berisi data spasial dan secara opsional pengidentifikasi sistem referensi spasial data (SRID).

Data spasial berisi data geometris yang dapat Anda gunakan untuk mewakili fitur geografis. Contoh jenis data ini termasuk laporan cuaca, arah peta, tweet dengan posisi geografis, lokasi toko, dan rute maskapai penerbangan. Data spasial memainkan peran penting dalam analitik bisnis, pelaporan, dan peramalan.

Anda dapat menanyakan data spasial dengan fungsi Amazon Redshift SQL. Data spasial berisi nilai geometris untuk suatu objek.

Oper GEOMETRY asi tipe data bekerja pada bidang Cartesian. Meskipun pengenal sistem referensi spasial (SRID) disimpan di dalam objek, SRID ini hanyalah pengidentifikasi sistem koordinat dan tidak memainkan peran dalam algoritma yang digunakan untuk memproses objek. GEOMETRY Sebaliknya, operasi pada tipe GEOGRAPHY data memperlakukan koordinat di dalam objek sebagai koordinat bola pada spheroid. Spheroid ini didefinisikan oleh SRID, yang mereferensikan sistem referensi spasial geografis. Secara default, tipe GEOGRAPHY data dibuat dengan referensi spasial (SRID) 4326, merujuk Sistem Geodetik Dunia (WGS) 84. Untuk informasi lebih lanjut tentang SRID, lihat Sistem referensi spasial di Wikipedia.

Anda dapat menggunakan fungsi ST_transform untuk mengubah koordinat dari berbagai sistem referensi spasial. Setelah transformasi koordinat selesai, Anda juga dapat menggunakan cast sederhana di antara keduanya, selama input GEOMETRY dikodekan dengan SRID geografis. Pemeran ini hanya menyalin koordinat tanpa transformasi lebih lanjut. Contoh:

SELECT ST_AsEWKT(ST_GeomFromEWKT('SRID=4326;POINT(10 20)')::geography);
st_asewkt ------------------------ SRID=4326;POINT(10 20)

Untuk lebih memahami perbedaan antara GEOMETRY dan tipe GEOGRAPHY data, pertimbangkan menghitung jarak antara bandara Berlin (BER) dan bandara San Francisco (SFO) menggunakan Sistem Geodetik Dunia (WGS) 84. Menggunakan tipe GEOGRAPHY data, hasilnya dalam meter. Saat menggunakan tipe GEOMETRY data dengan SRID 4326, hasilnya dalam derajat, yang tidak dapat dikonversi ke meter karena jarak satu derajat tergantung di mana geometri globe berada.

Perhitungan pada tipe GEOGRAPHY data sebagian besar digunakan untuk perhitungan bumi bulat yang realistis seperti area tepat suatu negara tanpa distorsi. Tetapi mereka jauh lebih mahal untuk dihitung. Oleh karena itu, ST_Transform dapat mengubah koordinat Anda ke sistem koordinat proyeksi lokal yang sesuai dan melakukan perhitungan pada tipe GEOMETRY data lebih cepat.

Menggunakan data spasial, Anda dapat menjalankan kueri untuk melakukan hal berikut:

  • Temukan jarak antara dua titik.

  • Periksa apakah satu wilayah (poligon) berisi lain.

  • Periksa apakah satu linestring memotong garis lain atau poligon.

Anda dapat menggunakan tipe GEOMETRY data untuk menyimpan nilai-nilai data spasial. GEOMETRYNilai di Amazon Redshift dapat mendefinisikan tipe data primitif geometri dua dimensi (2D), tiga dimensi (3DZ), dua dimensi dengan ukuran (3DM), dan empat dimensi (4D):

  • Geometri dua dimensi (2D) ditentukan oleh dua koordinat Cartesian (x, y) dalam bidang.

  • Geometri tiga dimensi (3DZ) ditentukan oleh tiga koordinat Cartesian (x, y, z) dalam ruang.

  • Geometri dua dimensi dengan ukuran (3DM) ditentukan oleh tiga koordinat (x, y, m), di mana dua yang pertama adalah koordinat Cartesian dalam bidang dan yang ketiga adalah pengukuran.

  • Geometri empat dimensi (4D) ditentukan oleh empat koordinat (x, y, z, m), di mana tiga yang pertama adalah koordinat Cartesian dalam ruang dan yang keempat adalah pengukuran.

Untuk informasi lebih lanjut tentang tipe data primitif geometri, lihat representasi Well-known teks geometri di Wikipedia.

Anda dapat menggunakan tipe GEOGRAPHY data untuk menyimpan nilai-nilai data spasial. GEOGRAPHYNilai di Amazon Redshift dapat mendefinisikan tipe data primitif geometri dua dimensi (2D), tiga dimensi (3DZ), dua dimensi dengan ukuran (3DM), dan empat dimensi (4D):

  • Geometri dua dimensi (2D) ditentukan oleh koordinat bujur dan lintang pada spheroid.

  • Geometri tiga dimensi (3DZ) ditentukan oleh koordinat bujur, lintang, dan ketinggian pada spheroid.

  • Geometri dua dimensi dengan ukuran (3DM) ditentukan oleh tiga koordinat (bujur, lintang, ukuran), di mana dua yang pertama adalah koordinat sudut pada bola dan yang ketiga adalah pengukuran.

  • Geometri empat dimensi (4D) ditentukan oleh empat koordinat (bujur, lintang, ketinggian, ukuran), di mana tiga yang pertama adalah bujur, lintang dan ketinggian, dan yang keempat adalah pengukuran.

Untuk informasi lebih lanjut tentang sistem koordinat geografis, lihat Sistem koordinat geografis dan Sistem koordinat bola di Wikipedia.

Tipe GEOMETRY dan GEOGRAPHY data memiliki subtipe berikut:

  • POINT

  • LINESTRING

  • POLYGON

  • MULTIPOINT

  • MULTILINESTRING

  • MULTIPOLYGON

  • GEOMETRYCOLLECTION

Ada fungsi Amazon Redshift SQL yang mendukung representasi data geometris berikut:

  • GeoJSON

  • Well-known teks (WKT)

  • Teks terkenal yang diperluas (EWKT)

  • Well-known representasi biner (WKB)

  • Biner terkenal yang diperluas (EWKB)

Anda dapat mentransmisikan antara GEOMETRY dan GEOGRAPHY tipe data.

SQL berikut melemparkan linestring dari a GEOMETRY ke a. GEOGRAPHY

SELECT ST_AsEWKT(ST_GeomFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geography);
st_asewkt ---------------------------------------------- SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)

SQL berikut melemparkan linestring dari a GEOGRAPHY ke a. GEOMETRY

SELECT ST_AsEWKT(ST_GeogFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geometry);
st_asewkt ---------------------------------------------- SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)

Amazon Redshift menyediakan banyak fungsi SQL untuk menanyakan data spasial. Kecuali ST_IsValid fungsi, fungsi spasial yang menerima GEOMETRY objek sebagai argumen mengharapkan GEOMETRY objek ini menjadi geometri yang valid. Jika GEOGRAPHY objek GEOMETRY atau tidak valid, maka perilaku fungsi spasial tidak ditentukan. Untuk informasi lebih lanjut tentang validitas, lihatValiditas geometris.

Untuk detail tentang fungsi SQL untuk menanyakan data spasial, lihatFungsi spasial.

Untuk detail tentang memuat data spasial, lihatMemuat kolom tipe data GEOMETRI atau GEOGRAFI.