All Products
Search
Document Center

PolarDB:pg_sphere

Last Updated:Jul 02, 2025

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)

Catatan

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)
      Catatan

      Jika 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.

      Catatan

      Fungsi long(spoint) di ekstensi pg_sphere diubah menjadi long_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.