All Products
Search
Document Center

PolarDB:pg_sphere (perhitungan data sferis)

Last Updated:Nov 06, 2025

pg_sphere adalah ekstensi open-source PostgreSQL yang mendukung tipe data sferis, fungsi, dan operator. Ekstensi ini memungkinkan Anda merepresentasikan objek pada bola seperti titik, garis, dan poligon di Bumi serta melakukan perhitungan jarak atau luas antar objek tersebut.

Prasyarat

Versi berikut dari PolarDB for PostgreSQL didukung:

  • PostgreSQL 16 (versi mesin minor 2.0.16.9.6.0 atau lebih baru)

  • PostgreSQL 14 (versi mesin minor 2.0.14.5.1.0 atau lebih baru)

  • PostgreSQL 11 (versi mesin minor 2.0.11.9.27.0 atau lebih baru)

Catatan

Anda dapat memeriksa versi mesin minor di console atau dengan menjalankan pernyataan SHOW polardb_version;. Jika versi mesin minor Anda tidak memenuhi persyaratan, Anda perlu melakukan peningkatan versi mesin minor.

Prosedur

Instalasi atau penghapusan ekstensi

  • Instalasi ekstensi.

    CREATE EXTENSION pg_sphere;
  • Hapus ekstensi.

    DROP EXTENSION pg_sphere;

Tipe data

Ekstensi pg_sphere mendukung tipe objek berikut:

  • Titik

  • Transformasi Euler

  • Lingkaran

  • Garis

  • Elips

  • Jalur

  • Poligon

Contoh berikut menunjukkan cara membuat objek titik. Anda dapat merepresentasikan titik pada sebuah bola dalam salah satu dari tiga cara berikut:

  • Tentukan lokasi berdasarkan bujur dan lintang dalam radian.

    SELECT spoint '(0.1,-0.2)';

    Outputnya adalah:

        spoint
    --------------
     (0.1 , -0.2)
    (1 row)
  • Tentukan lokasi berdasarkan bujur dan lintang dalam derajat.

    SELECT spoint '( 10.1d, -90d)';

    Outputnya adalah:

                     spoint
    ----------------------------------------
     (0.176278254451427 , -1.5707963267949)
    (1 row)
  • Tentukan bujur dan lintang menggunakan derajat, menit, dan detik (DMS).

    SELECT spoint '( 10d 12m 11.3s, -13d 14m)';

    Outputnya adalah:

                      spoint                  
    ------------------------------------------
     (0.178078367649387 , -0.230965237680583)
    (1 row)
    Catatan

    Sebuah lingkaran dibagi menjadi 360 derajat. Satu derajat dibagi menjadi 60 menit. Satu menit dibagi menjadi 60 detik.

Konstruktor

Konstruktor digunakan untuk membuat tipe data sferis seperti Titik, Transformasi Euler, Lingkaran, Garis, Elips, Jalur, dan Poligon dari tipe data lainnya.

Contoh berikut mengonstruksi titik sferis dari bujur dan lintang. Titik yang dihasilkan memiliki bujur 270 derajat dan lintang -30 derajat.

SELECT spoint (270.0 * pi() / 180.0, -30.0 * pi() / 180.0) AS spoint;

Outputnya adalah:

                 spoint
-----------------------------------------
 (4.71238898038469 , -0.523598775598299)
(1 row)

Operator

Ekstensi pg_sphere mendukung operator berikut:

  • Casting mengacu pada proyeksi.

  • Kesetaraan

  • Mengandung dan tumpang tindih

  • Persilangan garis

  • Jarak

  • Panjang dan keliling

  • Pusat

Contoh berikut menggunakan operator jarak untuk menghitung jarak antara dua lingkaran.

SELECT 180 * ( scircle '<(0d,20d),2d>' <-> scircle '<(0d,40d),2d>' ) / pi() AS dist;

Outputnya adalah:

 dist
------
   16
(1 row)

Fungsi

Ekstensi pg_sphere mendukung fungsi perhitungan berikut:

  • Fungsi perhitungan area

  • Fungsi perhitungan jalur

  • Fungsi perhitungan jarak

Contoh berikut menunjukkan cara menggunakan fungsi perhitungan area dan fungsi perhitungan titik.

  • Hitung area lingkaran sferis dalam satuan pi.

    SELECT area( scircle '<(0d,90d),60d>' ) / pi() AS area;

    Outputnya adalah:

     area 
    ------
        1
    (1 row)
  • Ambil bujur dan lintang titik sferis dalam derajat.

    Catatan

    Dalam ekstensi pg_sphere, fungsi long(spoint) telah diubah menjadi long_sphere(spoint).

    • SELECT long_sphere ( spoint '(10d,20d)' ) * 180.0 / pi() AS longitude;

      Outputnya adalah:

      longitude
      ------------
      10
      (1 row)
    • SELECT lat ( spoint '(10d,20d)' ) * 180.0 / pi() AS latitude;

      Outputnya adalah:

      latitude
      ----------
      20
      (1 row)

Referensi

Untuk informasi lebih lanjut, lihat dokumentasi resmi pg_sphere.