Skip to main content

PostgreSQL データベースへの ST_Geometry タイプの追加

Standard または Advanced ライセンスで利用可能。

ST_Geometry タイプを使用して空間データを PostgreSQL データベースに保存するには、データベース管理者が、空間タイプの作成 ジオプロセシング ツール、または CreateSpatialType ArcPy 関数を呼び出す Python スクリプトを実行して、データベースにそのタイプ、サブタイプ、関数を追加します。

ヒント:

空間タイプ パラメーターを PostGIS に設定して エンタープライズ ジオデータベースの作成 ジオプロセシング ツールを使用して PostgreSQL にジオデータベースを作成し、その後でそのジオデータベースに ST_Geometry タイプを追加することにした場合は、空間タイプの作成 ツールを実行して追加できます。 そうでない場合は、データベースで 空間タイプの作成 (Create Spatial Type) ツールのみを実行します。

空間タイプの作成 (Create Spatial Type) ツールおよび関数は、以下を実行します。

  • PostgreSQL データベース クラスターに sde ログイン ロールを作成します。

  • sde ユーザーにスーパーユーザー権限を付与します (ST_Geometry タイプの作成後、この権限は取り消すことができます)。

  • sde という名前のスキーマをデータベースに作成します。

  • sde ユーザーに、sde スキーマに対するすべての権限を付与します。

  • sde スキーマに対する USAGE 権限をパブリック ログイン グループに付与します。 この権限をパブリック グループから取り消すことはできますが、sde スキーマに対する USAGE 権限を ST_Geometry タイプ、サブタイプ、関数にアクセスする必要のあるすべてのユーザーに付与する必要があります。

  • 必要な関数、ドメイン、テーブル (sde_coordinate_systems および sde_geometry_columns)、ビュー (st_geometry_columns および st_spatial_references) を sde スキーマに、sde_spatial_references テーブルをパブリック スキーマに作成します。

ツールまたは関数を実行する前に、st_geometry ライブラリーを PostgreSQL サーバーにコピーする必要があります。

注意:

Microsoft Windows サーバー上にデプロイされた場合、st_geometry.dll ファイルには Microsoft Visual C++ 再頒布可能パッケージ (x64) が必要となります。 必要となるパッケージ バージョンについては、「PostgreSQL を使用するための ArcGIS の要件」をご参照ください。 このパッケージが PostgreSQL サーバー上に存在しない場合は、Microsoft のサイトからダウンロードしてインストールしてください。

空間タイプの作成ジオプロセシング ツールの使用

空間タイプの作成 (Create Spatial Type) ジオプロセシング ツールを実行して、ST_Geometry タイプを PostgreSQL データベースにインストールするには、次の手順を実行します:

  1. My Esri から ST_Geometry 圧縮ファイルをダウンロードします。

    この圧縮ファイルは、空間タイプを作成する ArcGIS ソフトウェアのバージョンに固有のものです。

    ダウンロードのオプションがない場合は、ArcGIS 組織の管理者にお問い合わせください。

  2. ファイルのコンテンツを抽出します。

    注意:

    st_geometry ライブラリーは、特定のオペレーティング システムと、PostgreSQL のバージョンに対応しています。 正しいライブラリーをコピーしてください。

  3. st_geometry ファイルを PostgreSQL の lib ディレクトリーに配置します。

    • PostgreSQL が Windows サーバーにインストールされている場合は、st_geometry.dll ファイルをサーバーの %PostgreSQL%\lib ディレクトリーに配置します。

    • Linux 上の lib ディレクトリーの場所は、PostgreSQL をインストールした方法によって異なります。 PostgreSQL のインストール用の正しい場所を確認するには、postgres ユーザーで pg_config を実行します。 PKGLIBDIR に対して返された値は、st_geometry.so ファイルを配置する必要のある lib ディレクトリーです。 root ユーザーとしてコンピューターにサイン インし、このファイルを lib の場所にコピーします。

    注意:

    Linux オペレーティング システムにライブラリーの libstdcc++.so.6.0.29 以降のバージョンが含まれていない場合は、libstdcc++.so.6 ライブラリーも PostgreSQL の lib ディレクトリーに、st_geometry.so ライブラリーと一緒に配置します。

  4. プロジェクトを ArcGIS Pro で開き、カタログ ウィンドウを表示した後、PostgreSQL スーパーユーザーとしてデータベースに接続します。

    データベース コネクション (.sde) ファイルがプロジェクト フォルダーに作成されます。

  5. 空間タイプの作成 ツールを開きます。

    このツールは、検索 ウィンドウを使用して検索するか、データ管理ツールボックスのワークスペース ツールセットから開くことができます。

  6. ステップ 2 で作成したデータベース接続を 入力データベース コネクション パラメーター テキスト ボックスに追加します。

  7. SDE ユーザー パスワード パラメーター テキスト ボックスに sde データベース ユーザーのパスワードを入力します。

    ヒント:

    PostgreSQL データベース クラスターに sde ログイン ロールがすでに存在する場合は、入力するパスワードと既存の sde ログイン ロールのパスワードが一致する必要があります。 たとえば、これと同じデータベース クラスターにエンタープライズ ジオデータベースが含まれる場合は、すでに存在する sde ログイン ロールのパスワードをここで使用する必要があります。

  8. 表領域名 パラメーター テキスト ボックスは空白のままにします。

  9. 実行 をクリックします。

指定したデータベースの sde ユーザーのスキーマに、ST_Geometry タイプ、サブタイプ、および関数が作成されます。

ArcPy 関数の使用

ArcGIS Pro または ArcGIS Server のコンピューターで、CreateDatabaseConnection ArcPy 関数を使用してデータベース コネクション ファイル (.sde) を作成し、このファイルを使用して、PostgreSQL のスーパーユーザーとして PostgreSQL データベースに接続します。 次に、.sde ファイルと CreateSpatialType ArcPy 関数を使用して、データベースに ST_Geometry のタイプ、サブタイプ、および関数を作成します。

  1. My Esri から st_geometry ライブラリーをダウンロードして、PostgreSQL lib ディレクトリーに配置します。

    注意:

    Linux オペレーティング システムにライブラリーの libstdcc++.so.6.0.29 以降のバージョンが含まれていない場合は、My Esri から PostgreSQL 用の libstdcc++.so.6 ライブラリーもダウンロードし、PostgreSQL の lib ディレクトリーに、st_geometry.so ライブラリーとともに置きます。

    st_geometry ライブラリーは、特定のオペレーティング システム、PostgreSQL のバージョン、および ArcGIS バージョンに対応しています。

    • Linux 上の lib ディレクトリーの場所は、PostgreSQL をインストールした方法によって異なります。 PostgreSQL のインストール用の正しい場所を確認するには、postgres ユーザーで pg_config を実行します。 PKGLIBDIR に対して返された値は、st_geometry.so ファイルを配置する必要のある lib ディレクトリーです。 root ユーザーとしてコンピューターにサイン インし、このファイルを lib の場所にコピーします。

    • PostgreSQL が Windows サーバーにインストールされている場合は、st_geometry.dll ファイルをサーバーの %PostgreSQL%\lib ディレクトリーに配置します。

  2. CreateDatabaseConnection 関数を実行して .sde ファイルを作成します。

    PostgreSQL のスーパーユーザーとして接続し、認証情報を保存する必要があります。

    次の例で、接続ファイルは TempFiles というディレクトリーに作成され、接続ファイル名は suserconnection.sde です。スーパーユーザーの認証情報が提供されて、ファイルとともに保存され、データベース クラスター pginstance 内の pgdb というデータベースへの接続に使用されます。

    import arcpy
    arcpy.management.CreateDatabaseConnection(
       "/user/TempFiles",
       "suserconnection.sde",
       "POSTGRESQL",
       "pginstance",
       "DATABASE_AUTH",
       "postgres",
       "Cl@rkK3nt",
       "SAVE_USERNAME",
       "pgdb"
    )
    
  3. CreateSpatialType ArcPy 関数を実行して、PostgreSQL インスタンスに ST_Geometry タイプをインストールします。

    この例では、前のステップの接続ファイルを使用し、sde パスワードは pw0rd4sde に設定されています。

    import arcpy
    arcpy.management.CreateSpatialType(
       "suserconnection.sde",
       "pw0rd4sde"
    )
    
    

ST_Geometry タイプ、サブタイプ、および関数は、データベース コネクション ファイルで指定されたデータベース内の sed ユーザーのスキーマで作成されます。