View a markdown version of this page

ST_ GeoSquare - 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.

ST_ GeoSquare

ST_ GeoSquare secara rekursif membagi domain ([-180, 180], [-90, 90]) menjadi wilayah persegi yang sama yang disebut ge osquares ke kedalaman tertentu. Subdivisi didasarkan pada lokasi titik yang disediakan. Salah satu geosquares yang berisi titik dibagi lagi di setiap langkah hingga mencapai kedalaman maksimum. Pemilihan geosquare ini stabil, yaitu hasil fungsi hanya bergantung pada argumen input. Fungsi mengembalikan nilai unik yang mengidentifikasi geosquare akhir di mana titik tersebut berada.

ST_ GeoSquare menerima TITIK di mana koordinat x mewakili bujur, dan koordinat y mewakili garis lintang. Garis bujur dan lintang masing-masing terbatas pada [-180, 180] dan [-90, 90]. Output ST_ GeoSquare dapat digunakan sebagai input ke ST_ GeomFromGeoSquare fungsi.

Ada 360° di sekitar busur lingkar ekuator Bumi yang dibagi menjadi dua belahan bumi (Timur dan Barat), masing-masing dengan 180° garis longitudinal (Meridian) dari 0° Meridian. Secara konvensi, garis bujur timur adalah koordinat “+” (positif) ketika diproyeksikan ke sumbu x pada bidang Cartesian dan garis bujur barat adalah koordinat “-” (negatif) ketika diproyeksikan ke sumbu x pada bidang Cartesian. Ada 90° garis lintang utara dan selatan lingkar ekuator 0° Bumi, masing-masing sejajar dengan keliling ekuator 0° Bumi. Secara konvensi, garis lintang utara memotong sumbu y “+” (positif) ketika diproyeksikan ke bidang Cartesian, dan garis lintang selatan memotong sumbu y “-” (negatif) ketika diproyeksikan ke bidang Cartesian. Kisi bola yang dibentuk oleh persimpangan garis longitudinal dan garis lintang diubah menjadi grid yang diproyeksikan ke bidang Cartesian dengan koordinat x positif dan negatif standar dan koordinat y positif dan negatif pada bidang Cartesian.

Tujuan ST_ GeoSquare adalah untuk menandai atau menandai titik penutupan dengan nilai kode yang sama. Poin yang terletak di geosquare yang sama menerima nilai kode yang sama. Geosquare digunakan untuk mengkodekan koordinat geografis (lintang dan bujur) menjadi bilangan bulat. Wilayah yang lebih besar dibagi menjadi grid untuk menggambarkan area pada peta dengan resolusi yang bervariasi. Geosquare dapat digunakan untuk pengindeksan spasial, binning spasial, pencarian jarak, pencarian lokasi, dan membuat pengidentifikasi tempat yang unik. ST_ GeoHashFungsi ini mengikuti proses serupa membagi wilayah menjadi grid, tetapi memiliki pengkodean yang berbeda.

Sintaksis

ST_GeoSquare(geom)
ST_GeoSquare(geom, max_depth)

Argumen

geom

Nilai POINT dari tipe data GEOMETRY atau ekspresi yang mengevaluasi ke subtipe POINT. Koordinat x (bujur) titik harus berada dalam kisaran: -180 —180. Koordinat y (lintang) titik harus berada dalam kisaran: -90 —90.

kedalaman maksimum

Nilai tipe dataINTEGER. Jumlah maksimum kali domain yang berisi titik dibagi lagi secara rekursif. Nilai harus berupa bilangan bulat dari 1 — 32. Default-nya adalah 32. Jumlah akhir yang sebenarnya dari subdivisi kurang dari atau sama dengan max _deep yang ditentukan.

Jenis pengembalian

BIGINT

Fungsi mengembalikan nilai unik yang mengidentifikasi geosquare akhir di mana titik input berada.

Jika geom input bukan titik, fungsi mengembalikan kesalahan.

Jika titik input kosong, nilai pengembalian bukanlah input yang valid ke ST_ GeomFromGeoSquare fungsi. Gunakan ST_ IsEmpty fungsi untuk mencegah panggilan ke ST_ GeoSquare dengan titik kosong.

Jika titik input tidak dalam jangkauan, fungsi mengembalikan kesalahan.

Jika input max_deep berada di luar jangkauan, fungsi mengembalikan kesalahan.

Contoh

SQL berikut mengembalikan geosquare dari titik input.

SELECT ST_GeoSquare(ST_Point(13.5, 52.5));
st_geosquare ----------------------- -4410772491521635895

SQL berikut mengembalikan geosquare dari titik input dengan kedalaman maksimum. 10

SELECT ST_GeoSquare(ST_Point(13.5, 52.5), 10);
st_geosquare -------------- 797852