Ekstensi pg_sphere menyediakan tipe data, fungsi, dan operator berbasis bola untuk PostgreSQL asli. Ekstensi ini digunakan untuk merepresentasikan titik, garis, dan bidang pada bola seperti Bumi, serta menghitung jarak atau luas antara elemen-elemen tersebut.
Prasyarat
Ekstensi pg_sphere didukung pada kluster PolarDB for PostgreSQL (Compatible with Oracle) yang menjalankan mesin berikut:
PolarDB for PostgreSQL (Compatible with Oracle) 2.0 (versi revisi 2.0.14.1.0 atau lebih baru)
PolarDB for PostgreSQL (Compatible with Oracle) 1.0 (versi revisi 1.1.27 atau lebih baru)
Anda dapat menjalankan pernyataan berikut untuk melihat versi revisi dari kluster PolarDB for PostgreSQL (Compatible with Oracle):
SHOW polar_version;Penggunaan
Create or delete the pg_sphere extension
Buat ekstensi pg_sphere.
CREATE EXTENSION pg_sphere;Hapus ekstensi pg_sphere.
DROP EXTENSION pg_sphere;
Data types
Ekstensi pg_sphere mendukung tipe data berikut:
POINT
EULER TRANSFORMATION
CIRCLE
LINE
ELLIPSES
PATH
POLYGON
Titik digunakan dalam contoh berikut. Tiga cara dapat digunakan untuk mengekspresikan titik pada bola:
Tentukan posisi dengan bujur dan lintang. Satuan: radian.
SELECT spoint '(0.1,-0.2)';Hasil sampel:
spoint -------------- (0.1 , -0.2) (1 baris)Tentukan posisi dengan bujur dan lintang. Satuan: derajat.
SELECT spoint '( 10.1d, -90d)';Hasil sampel:
spoint ---------------------------------------- (0.176278254451427 , -1.5707963267949) (1 baris)Tentukan bujur dan lintang dalam derajat menit detik (DMS).
SELECT spoint '( 10d 12m 11.3s, -13d 14m)';Hasil sampel:
spoint ---------------------------------------- (0.176278254451427 , -1.5707963267949) (1 baris)CatatanJika sebuah lingkaran dibagi menjadi 360 bagian yang sama, sudut pusat yang sesuai dengan satu bagian adalah 1 derajat. Jika panjang busur yang sesuai dengan 1 derajat dibagi menjadi 60 bagian yang sama, sudut pusat yang sesuai dengan satu bagian adalah 1 menit. Jika panjang busur yang sesuai dengan 1 menit dibagi menjadi 60 bagian yang sama, sudut pusat yang sesuai dengan satu bagian adalah 1 detik.
Constructors
Konstruktor dapat menggunakan tipe data lain untuk membangun tipe data bola. Konstruktor mendukung tipe data berikut: POINT, EULER TRANSFORMATION, CIRCLE, LINE, ELLIPSES, PATH, dan POLYGON.
Titik digunakan dalam contoh berikut. Bangun titik bola dengan menggunakan bujur dan lintang. Posisi bola dengan bujur 270 dan lintang -30 diperoleh.
SELECT spoint (270.0 * pi() / 180.0, -30.0 * pi() / 180.0) AS spoint;Hasil sampel:
spoint ----------------------------------------- (4.71238898038469 , -0.523598775598299) (1 baris)Operators
Ekstensi pg_sphere mendukung operator berikut:
Pengecoran
Kesetaraan
Mengandung dan tumpang tindih
Persilangan garis
Jarak
Panjang dan keliling
Pusat
Jarak digunakan untuk menghitung jarak antara dua lingkaran dalam contoh berikut.
SELECT 180 * ( scircle '<(0d,20d),2d>' <-> scircle '<(0d,40d),2d>' ) / pi() AS dist;Hasil sampel:
dist ------ 16 (1 baris)Functions
Ekstensi pg_sphere mendukung fungsi komputasi berikut:
Fungsi area
Fungsi jalur
Fungsi jarak
Fungsi perhitungan area dan fungsi perhitungan titik digunakan dalam contoh berikut.
Hitung luas bola dalam pi.
SELECT area( scircle '<(0d,90d),60d>' ) / pi() AS area;Hasil sampel:
area ------ 1 (1 baris)Dapatkan bujur dan lintang titik bola dalam derajat.
CatatanFungsi
long(spoint)di ekstensi pg_sphere diubah menjadilong_sphere(spoint).SELECT long_sphere ( spoint '(10d,20d)' ) * 180.0 / pi() AS longitude;Hasil sampel:
longitude ------------ 10 (1 baris)SELECT lat ( spoint '(10d,20d)' ) * 180.0 / pi() AS latitude;Hasil sampel:
latitude ---------- 20 (1 baris)
Referensi
Untuk informasi lebih lanjut tentang pg_sphere, lihat Dokumentasi.