すべてのプロダクト
Search
ドキュメントセンター

PolarDB:pg_sphere (球面データ計算)

最終更新日:Nov 06, 2025

pg_sphere は、球面データの型、関数、およびオペレーターをサポートするオープンソースの PostgreSQL 拡張機能です。これにより、地球の点、線、ポリゴンなど、球上のオブジェクトを表現できます。また、これらのオブジェクト間の距離や面積の計算もサポートしています。

前提条件

PolarDB for PostgreSQL の次のバージョンがサポートされています。

  • PostgreSQL 16 (マイナーエンジンバージョン 2.0.16.9.6.0 以降)

  • PostgreSQL 14 (マイナーエンジンバージョン 2.0.14.5.1.0 以降)

  • PostgreSQL 11 (マイナーエンジンバージョン 2.0.11.9.27.0 以降)

説明

マイナーエンジンバージョンは、[コンソール] で確認するか、SHOW polardb_version; 文を実行して確認できます。マイナーエンジンバージョンが要件を満たしていない場合は、マイナーエンジンバージョンをスペックアップする必要があります。

手順

拡張機能のインストールまたはアンインストール

  • 拡張機能をインストールします。

    CREATE EXTENSION pg_sphere;
  • 拡張機能をアンインストールします。

    DROP EXTENSION pg_sphere;

データの型

pg_sphere 拡張機能は、次のオブジェクトタイプをサポートしています。

  • オイラー変換

  • 楕円

  • パス

  • ポリゴン

次の例は、点オブジェクトを作成する方法を示しています。球上の点は、次の 3 つの方法のいずれかで表現できます。

  • ラジアン単位の経度と緯度で位置を指定します。

    SELECT spoint '(0.1,-0.2)';

    出力は次のとおりです。

        spoint
    --------------
     (0.1 , -0.2)
    (1 row)
  • 度単位の経度と緯度で位置を指定します。

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

    出力は次のとおりです。

                     spoint
    ----------------------------------------
     (0.176278254451427 , -1.5707963267949)
    (1 row)
  • 度、分、秒 (DMS) を使用して経度と緯度を指定します。

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

    出力は次のとおりです。

                      spoint                  
    ------------------------------------------
     (0.178078367649387 , -0.230965237680583)
    (1 row)
    説明

    円は 360 度に分割されます。1 度は 60 分に分割されます。1 分は 60 秒に分割されます。

コンストラクター

コンストラクターは、他のデータの型から点、オイラー変換、円、線、楕円、パス、ポリゴンなどの球面データの型を作成するために使用されます。

次の例では、経度と緯度から球面点を作成します。結果の点の経度は 270 度、緯度は -30 度です。

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

出力は次のとおりです。

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

オペレーター

pg_sphere 拡張機能は、次のオペレーターをサポートしています。

  • キャストは射影を指します。

  • 等価性

  • 包含と重複

  • 線の交差

  • 距離

  • 長さと円周

  • 中心

次の例では、距離オペレーターを使用して 2 つの円の間の距離を計算します。

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

出力は次のとおりです。

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

関数

pg_sphere 拡張機能は、次の計算関数をサポートしています。

  • 面積計算関数

  • パス計算関数

  • 距離計算関数

次の例は、面積計算関数と点計算関数の使用方法を示しています。

  • 球面円の面積を pi の単位で計算します。

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

    出力は次のとおりです。

     area 
    ------
        1
    (1 row)
  • 球面点の経度と緯度を度単位で取得します。

    説明

    pg_sphere 拡張機能では、long(spoint) 関数は long_sphere(spoint) に変更されました。

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

      出力は次のとおりです。

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

      出力は次のとおりです。

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

リファレンス

詳細については、「pg_sphere 公式ドキュメント」をご参照ください。