Windows での PostgreSQL のジオデータベースの作成

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

ジオデータベースを PostgreSQL データベース内に作成するには、ジオプロセシング ツールまたは Python スクリプトを ArcGIS クライアントから実行します。

ArcGIS Pro 3.5 からジオデータベースを作成する場合、そのジオデータベースのバージョンは 11.5.0.x になります。

まず、下記の前提条件に目を通した上で、状況に当てはまる手順を実行します。

これらの指示は Microsoft Windows サーバーにインストールされている PostgreSQL に関するものです。 PostgreSQLLinux サーバーにインストールされている場合は、「Linux での PostgreSQL のジオデータベースの作成」をご参照ください。

前提条件

ジオデータベースを PostgreSQL 内に作成する前に、次のことを行っておく必要があります。

  1. 使用する ArcGIS、PostgreSQL、およびオペレーティング システムの組み合わせがサポートされていることを確認します。
  2. ArcGIS Server キーコード ファイルを入手し、ジオデータベースの作成に使用する ArcGIS クライアントからアクセスできる位置に配置します。
  3. 既存の PostgreSQL データベースでジオデータベースを作成または有効にする場合は、パブリック スキーマが存在することを確認してください。

    ジオデータベース システム テーブルのいずれかがパブリック スキーマに作成されます。

  4. ジオデータベースを作成するユーザー (これによってデータベースの作成者が決まる) と、使用するツールを決定します。 次のうち、状況に当てはまる手順に従ってください。

PostgreSQL およびジオデータベースの管理者である場合

データベース管理者とジオデータベース管理者の両方のロールを実行するため、両方のログイン ロールのパスワードを知っている場合、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツール、またはこのツールを呼び出す Python スクリプトを使用して、PostgreSQL にジオデータベースを作成できます。

[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールでは、ジオデータベースに必要なデータベース オブジェクトが作成され、必要な権限が付与されます。 これを実行する場合、特定のデフォルト設定を使用します。 以下では、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールの機能と使用する設定について説明します。

  • PostgreSQL のデフォルトのテンプレート (template1) を使用してデータベースを作成します。

    別のテンプレートを使用してデータベースを作成する必要がある場合 (たとえば、データベース クラスター用に定義したテンプレートを使用する場合)、このツールを実行する前にデータベースを作成する必要があります。 その後、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールまたはスクリプトを実行する際に、作成したデータベースの名前を指定します。

  • データベース認証の sde ログイン ロールをデータベース クラスターに作成し、スーパーユーザー ステータスを付与します。

    ジオデータベースを作成するには、sde ユーザーがスーパーユーザーである必要があります。

  • sde スキーマをデータベースに作成します。

    ジオデータベースのシステム テーブル、ビュー、関数、およびプロシージャは、sde スキーマに格納されます。

  • sde ユーザーを sde スキーマの所有者として設定し、sde スキーマに対する使用権限を public ロールに付与します。

    ジオデータベースを使用するログイン ロールは、sde スキーマにアクセスできる必要があります。 ジオデータベースのログイン ロールがまだ存在しない可能性があるため、このツールは使用権限を public に対して付与します。 ジオデータベースの作成後、sde スキーマに対する使用権限を public から取り消し、ジオデータベースにアクセスする必要のあるログイン グループおよびロールにのみ使用権限を付与することによって、ジオデータベースのセキュリティを強化することができます。

  • ジオデータベースを作成します。

はじめに、自分で (または IT 部門の誰かが) PostgreSQL をインストールし、データベース クラスターを構成する必要があります。

PostgreSQL のインストールと構成

ジオデータベースを格納するように PostgreSQL データベース クラスターを設定するには、以下の手順に従います。

  1. サポートされている PostgreSQL のバージョンを入手、インストールし、データベース クラスターを設定します。

    PostgreSQL をインストールおよび構成する手順については、PostgreSQL のドキュメントをご参照ください。

  2. 接続を受け入れるようにデータベース クラスターを設定します。

    これには、pg_hba.conf ファイルを変更して、データベース クラスターがリモート接続を受け入れるようにすることが含まれます。

  3. 表領域を、データベースを格納するデータベース クラスターに作成します。 表領域を作成しなかった場合、pg_default 表領域が使用されます。

次に、ArcGIS クライアントをインストールして構成します。

空間タイプへのアクセスの許可

ジオデータベースを格納するには、PostgreSQL が空間タイプにアクセス可能でなければなりません。 データベース クラスターに Esri ST_Geometry 空間タイプへのアクセスを許可するか、PostGIS をインストールすることができます。

データベース クラスターが空間タイプにアクセスできる場合、ジオデータベースを作成することができます。

ST_Geometry

ジオデータベースで ST_Geometry を使用するには、st_geometry.dll ファイルを PostgreSQL lib ディレクトリに配置します。

st_geometry.dll ファイルは、My Esri からダウンロードできます。

注意:

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

使用している PostgreSQL のバージョンに固有の st_geometry.dll ファイルを、PostgreSQL lib ディレクトリに配置します。 必ず正しいファイル バージョンを使用してください。

PostGIS

ジオデータベースで PostGIS 空間タイプを使用するには、PostGISPostgreSQL データベース クラスターにインストールします。 ArcGIS でサポートされているバージョンの PostGIS をインストールしてください。

ArcGIS クライアントのインストール

自分で (または IT 部門の誰かが) ArcGIS Pro (Desktop Standard または Desktop Advanced) または ArcGIS Server をインストールする必要があります。 Python スクリプトを実行して、このいずれかのクライアントからジオデータベースを作成することができます。 スクリプトの代わりに [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールを実行するには、ArcGIS Pro をインストールします。

注意:

次のセクションでは、ArcGIS Server (Enterprise エディション) のキーコード ファイルを使用してジオデータベースを認証する必要があります。 ArcGIS Server コンピューターから Python スクリプトを実行してジオデータベースを作成する場合以外でも、ArcGIS Server を認証してキーコード ファイルを取得する必要があります。 場合によって、ArcGIS Server コンピューターから、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールがアクセスできる場所にキーコード ファイルをコピーする必要があります。

ジオデータベースの作成

ジオデータベースを作成するには、ArcGIS Pro から [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを実行するか、このツールを呼び出す Python スクリプトを ArcGIS Pro または ArcGIS Server のコンピューターから実行します。

[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールの実行

以下の手順に従って、ArcGIS Pro[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを使用してジオデータベースを作成します。

  1. ArcGIS Pro を起動します。
  2. [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを開きます。

    このツールは、データ管理ツールボックスのジオデータベース管理ツールセットで検索または選択できます。 ジオプロセシング ツールを開く方法に関する一般情報については、「ジオプロセシング ツールの検索」をご参照ください。

  3. [データベース プラットフォーム] ドロップダウン リストから [PostgreSQL] を選択します。
  4. [インスタンス] テキスト ボックスに PostgreSQL サーバーの名前を入力します。
  5. [データベース] テキスト ボックスに、ジオデータベースを格納するデータベースの名前を入力します。
    注意:

    データベース名を小文字で入力します。大文字が含まれるオブジェクト名は、PostgreSQL のジオデータベースではサポートされていません。 データベース名を大文字、または大文字と小文字を組み合わせて入力した場合、ArcGIS はそれを小文字に変換します。

  6. データベースやその他のオブジェクトを作成するには、データベース クラスターに postgres スーパーユーザーとして接続する必要があります。そのため、[データベース管理者] テキスト ボックスの値は、デフォルトで postgres になっています。

    スーパーユーザーの名前が異なる場合は、その名前を [データベース管理者] テキスト ボックスに入力します。

    このリリースでは、オペレーティング システム認証の postgres スーパーユーザー ログインを使用することはできません。

  7. [データベース管理者パスワード] テキスト ボックスに postgres スーパーユーザーのパスワードを入力します。
  8. PostgreSQL では、ジオデータベース管理者の名前は sde にする必要があります。そのため、[ジオデータベース管理者] テキスト ボックスには [sde] が事前に入力されています。
  9. [ジオデータベース管理者パスワード] テキスト ボックスに、sde ユーザーのパスワードを入力します。

    sde ユーザーがデータベース クラスター内にすでに存在する場合、既存ユーザーのパスワードを入力すると、データベース内に sde スキーマが作成されます。 ユーザーがまだ存在しない場合、sde ユーザーと指定したパスワードがデータベース クラスター内に作成され、対応するスキーマがデータベースに作成されます。 PUBLIC グループ ロールに sde スキーマの USAGE 権限が付与されます。

    ヒント:

    ジオデータベースの作成後にスキーマのセキュリティを高めるには、PUBLIC グループ ロールから使用権限を削除し、新しいグループ ロールを作成し、sde スキーマの USAGE 権限をそのロールに付与してから、ジオデータベースにアクセスする必要のあるすべてのログイン ロールにそのグループ ロールを付与します。

  10. データベースのデフォルト表領域として使用する表領域が構成されている場合は、[表領域名] テキスト ボックスにその名前を入力します。

    このツールは表領域を作成しません。既存の表領域を指定するか、このテキスト ボックスは空白のままにしてください。 表領域を指定しない場合、データベースは pg_default に作成されます。

  11. [認証ファイル] で、ArcGIS Server (Enterprise エディション) を認証したときに作成されたキーコード ファイルを参照して選択します。

    このファイルは ArcGIS ServerWindows にインストールした場合は \\Program Files\ESRI\License<release#>\sysgen に書き込まれており、ArcGIS ServerLinux にインストールした場合は /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen に書き込まれています。 このファイルを、ジオデータベースの作成元のクライアントにアクセスできる場所にコピーします。 まだ行っていない場合には、この時点で ArcGIS Server を認証して、このファイルを作成します。

  12. [空間タイプ] ドロップダウン リストから、ジオデータベースで使用される空間タイプとして ST_Geometry または PostGIS を選択します。
  13. [実行] をクリックします。

これで、ジオデータベースが PostgreSQL データベースに作成されました。

ジオデータベース作成に関連するメッセージは、sde_setup.log ファイルにあります。このファイルは、このスクリプトが実行されたコンピューター上の TEMP 変数で指定されたディレクトリに作成されます。 ジオデータベースの作成時に問題が発生した場合は、このファイルを確認して問題を解決します。

次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。

ArcGIS クライアント コンピューターからの Python スクリプトの実行

ジオデータベースを作成するには、下に示したスクリプトをコピーおよび保存して、ArcGIS Pro (Desktop Standard または Desktop Advanced) または ArcGIS Server のコンピューターから実行します。

ヒント:

ArcGIS Server コンピューターからの Python の実行については、「ArcGIS Server および ArcPy」をご参照ください。

  1. ArcGIS クライアント コンピューター上でテキスト ファイルを作成し、そのファイルに以下のスクリプトをコピーして、サイト固有の情報を入力します。
    """
    Name: create_enterprise_gdb.py
    Description: Create an enterprise geodatabase in PostgreSQL with provided DBMS connection information
    Author: Esri
    """
    
    # Import system modules
    import arcpy, os
    
    # Local variables
    # Replace license path with the location of your keycodes file
    # Replace all arcpy.management.CreateEnterpriseGeodatabase values except "POSTGRESQL", "sde", and license with information appropriate for your site 
    license = os.fsencode("\\Program Files\\path\\to\\authorization_file\\keycodes")
    
    try:
        arcpy.management.CreateEnterpriseGeodatabase("POSTGRESQL",
                                                     "pgprod",
                                                     "pggdb",
                                                     "DATABASE_AUTH",
                                                     "postgres",
                                                     "N0pe3king!",
                                                     "",
                                                     "sde",
                                                     "sdepwd2vr9dzmctBuB",
                                                     "gis",
                                                     license,
                                                     "ST_GEOMETRY",
    
    )
        for i in range(arcpy.GetMessageCount()):
            arcpy.AddReturnMessage(i)
        arcpy.AddMessage("+++++++++\n")
    except:
        for i in range(arcpy.GetMessageCount()):
            arcpy.AddReturnMessage(i)
  2. スクリプトに記載されているとおりに値を置換します。
  3. .py 拡張子を付けてファイルを保存します。
  4. スクリプトを実行します。

    ジオデータベース作成に関連するメッセージは、sde_setup.log ファイルにあります。このファイルは、このスクリプトが実行されたコンピューター上の TEMP 変数または TMP 変数で指定されたディレクトリに作成されます。 ジオデータベースの作成時に問題が発生した場合は、このファイルを確認して問題を解決します。

これで、ジオデータベースが PostgreSQL データベースに作成されました。

次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。

PostgreSQL 管理者がデータベースを作成し、ジオデータベース管理者がジオデータベースを作成する場合

ジオデータベースを作成するユーザーがデータベース管理者 (postgres スーパーユーザー) のパスワードを使用できない場合、データベース管理者がデータベース、sde ログイン ロール、および sde スキーマを作成する必要があります。 次に、ジオデータベース管理者は、sde ログインを使用してデータベースに接続し、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツール、またはこのツールを呼び出す Python スクリプトを使用して、ジオデータベースを作成できます。

[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールは、データベース接続ファイルを入力データとして受け取り、ジオデータベースのシステム テーブル、ビュー、関数、プロシージャを sde スキーマに作成します。 このツールを実行するには、まず、データベース管理者が PostgreSQL データベース クラスターで以下を設定する必要があります。

  • スーパーユーザー ステータスを持つ sde という名前のログイン ロール
  • データベース
  • sde ログインに権限が付与されているデータベース内の sde スキーマ
  • 空間タイプ - st_geometry ライブラリが lib フォルダーの PostgreSQL インストール ディレクトリに存在するか、PostGIS がデータベースで構成されている必要があります。

PostgreSQL への空間タイプのインストールと構成

ジオデータベースを格納するには、はじめに、データベース管理者が PostgreSQL を準備する必要があります。

データベース管理者として PostgreSQL データベース クラスターを設定するには、次の手順を実行します。

注意:

すべてのデータベース オブジェクト名には、小文字のみを使用する必要があります。

  1. サポートされている PostgreSQL のバージョンを入手、インストールし、データベース クラスターを設定します。

    PostgreSQL をインストールおよび構成する手順については、PostgreSQL のドキュメントをご参照ください。

  2. 接続を受け入れるようにデータベース クラスターを設定します。

    これには、pg_hba.conf ファイルを変更して、データベース クラスターがリモート接続を受け入れるようにすることが含まれます。

  3. 必要に応じて、表領域を、データベースを格納するデータベース クラスターに作成します。
  4. sde という名前のログイン ロールを作成し、スーパーユーザー ステータスを付与します。

    ヒント:

    ジオデータベース管理者がデータベース接続を削除しない場合、ジオデータベースの作成後に、sde ロールからスーパーユーザー ステータスを取り消すことができます。

  5. ジオデータベースを格納するデータベースを作成します。
  6. sde という名前のスキーマをデータベースに作成し、そのスキーマに対する権限を sde ログイン ロールに付与します。
  7. データベースで空間データ タイプを有効化します。
    • データベースに PostGIS を構成するには、PostGIS ドキュメントの手順をご参照ください。その後、ステップ 9 に進みます。
    • ST_Geometry を構成するには、次のステップに進みます。
  8. ST_Geometry ライブラリを取得して、PostgreSQL lib ディレクトリに配置します。
    1. st_geometry.dll ファイルを My Esri からダウンロードします。

      使用している PostgreSQL のバージョンに適合するライブラリをダウンロードしてください。 間違ったライブラリを使用すると、ジオデータベース作成が失敗します。

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

      注意:

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

    2. PostgreSQL をインストールしたコンピューター上の PostgreSQL lib ディレクトリに st_geometry.dll ファイルを配置します。
  9. ジオデータベース管理者にデータベース接続情報を提供します。

    ジオデータベース管理者は、データベース クラスター名、データベース名、および sde ログイン ロールのパスワードを知る必要があります。

これで、データベースが存在し、ジオデータベース管理者が ArcGIS クライアントをインストールしてジオデータベースを作成できるようになりました。

ArcGIS クライアントのインストール

ジオデータベース管理者が、ジオデータベースを作成するには、ArcGIS Pro (Desktop Standard または Desktop Advanced) または ArcGIS Server のいずれかの ArcGIS クライアントが必要です。

注意:

次のセクションでは、ArcGIS Server (Enterprise エディション) のキーコード ファイルを使用してジオデータベースを認証する必要があります。 ArcGIS Server コンピューターから Python スクリプトを実行してジオデータベースを作成する場合以外でも、ArcGIS Server をインストールして認証し、キーコード ファイルを取得する必要があります。 場合によって、ArcGIS Server コンピューターから、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールがアクセスできる場所にキーコード ファイルをコピーする必要があります。

ArcGIS クライアントがインストールされると、データベースに接続し、ジオデータベースを作成できるようになります。

ジオデータベースの作成

ジオデータベース管理者は、ArcGIS Pro (Desktop Standard または Desktop Advanced) から [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行するか、ArcPy 関数を呼び出す Python スクリプトを ArcGIS Pro または ArcGIS Server から実行して、既存のデータベース内にジオデータベースを作成できます。

[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールの実行

以下の手順に従って、ArcGIS Pro[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを使用してジオデータベースを作成します。

  1. ArcGIS Pro を起動します。
  2. sde ユーザーとして PostgreSQL データベースに接続します。

    sde ユーザーがデータベース認証ユーザーである場合、sde ユーザーのパスワードをデータベース接続に保存する必要があります。

  3. [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを開きます。

    ジオプロセシング ツールを開く方法に関する一般情報については、「ジオプロセシング ツールの検索」をご参照ください。

  4. 新しい接続ファイルを [入力データベース] フィールドにドラッグします。
  5. [認証ファイル] の値を指定するには、ArcGIS Server (Enterprise エディション) を認証したときに作成されたキーコード ファイルを参照して選択します。

    このファイルは ArcGIS ServerWindows にインストールした場合は \\Program Files\ESRI\License<release#>\sysgen に書き込まれており、ArcGIS ServerLinux にインストールした場合は /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen に書き込まれています。 このファイルを、ジオデータベースの作成元のクライアントにアクセスできる場所にコピーします。 まだ行っていない場合には、この時点で ArcGIS Server を認証して、このファイルを作成します。

  6. [実行] をクリックします。

これで、ジオデータベースが PostgreSQL データベースに作成されました。

ジオデータベース作成に関連するメッセージは、sde_setup.log ファイルにあります。このファイルは、このスクリプトが実行されたコンピューター上の TEMP 変数で指定されたディレクトリに作成されます。 ジオデータベースの作成時に問題が発生した場合は、このファイルを確認して問題を解決します。

次に、データベース管理者は、データを作成、編集、表示するユーザーのログイン ロールおよび対応するスキーマを作成し、編集者とデータ閲覧者のログイン ロールを作成し、これらのユーザーに適切な権限を付与することができます。

ArcGIS クライアント コンピューターからの Python スクリプトの実行

ArcGIS Pro (Desktop Standard または Desktop Advanced) または ArcGIS Server コンピューターからスクリプトを実行してジオデータベースを作成するには、下記のスクリプトを使用できます。

ヒント:

ArcGIS Server コンピューターからの Python の実行については、「ArcGIS Server および ArcPy」をご参照ください。

以下の手順に従って Python スクリプトを実行し、ジオデータベースを PostgreSQL データベースに作成します。

  1. ArcGIS クライアント コンピューター上でテキスト ファイルを作成し、そのファイルに以下のスクリプトをコピーして、サイト固有の情報を入力します。

    # Name: enable_enterprise_gdb.py
    # Description: Create an enterprise geodatabase in an existing PostgreSQL database
    
    # Import system modules
    import arcpy, os
    
    # Local variables
    # Replace paths with those appropriate to your site
    license = "\\Program Files\\path\\to\\authorization_file\\keycodes"
    tempdir = "C:\\temp\\"
    connection_file_name = "egdb_connection.sde"
    
    # Check for the .sde file and delete it if present
    connection_file_name_path = os.path.join(tempdir, connection_file_name)
    
    arcpy.env.overwriteOutput=True
    if os.path.exists(connection_file_name_path):
    	os.remove(connection_file_name_path)
    
    # Create a connection to the geodatabase as the geodatabase administrator
    # Replace "pgprod" with the name of your PostgreSQL instance, "N0L0oking" with the sde password, and "entgdb" with the name of the database
    arcpy.CreateDatabaseConnection_management(tempdir,
                                              connection_file_name,
                                              "POSTGRESQL",
                                              "pgprod",
                                              "DATABASE_AUTH",
                                              "sde",
                                              "N0L0oking",
                                              "SAVE_USERNAME",
                                              "entgdb"
    )
    # Enable geodatabase
    try:
        arcpy.EnableEnterpriseGeodatabase_management(connection_file_name_path, license)
    except:
        for i in range(arcpy.GetMessageCount()):
            arcpy.AddReturnMessage(i)

  2. スクリプトに記載されているとおりに値を置換します。
  3. .py 拡張子を付けてファイルを保存します。
  4. スクリプトを実行します。

    ジオデータベース作成に関連するメッセージは、sde_setup.log ファイルにあります。このファイルは、スクリプトを実行したコンピューター上の TEMP 変数または TMP 変数で指定されたディレクトリに作成されます。 ジオデータベースの作成時に問題が発生した場合は、このファイルを確認して問題を解決します。

これで、ジオデータベースが PostgreSQL データベースに作成されました。

次に、データベース管理者は、データを作成、編集、表示するユーザーのログイン ロールおよび対応するスキーマを作成し、編集者とデータ閲覧者のログイン ロールを作成し、これらのユーザーに適切な権限を付与することができます。