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 データベースにインストールするには、次の手順を実行します:
My Esri から ST_Geometry 圧縮ファイルをダウンロードします。
この圧縮ファイルは、空間タイプを作成する ArcGIS ソフトウェアのバージョンに固有のものです。
ダウンロードのオプションがない場合は、ArcGIS 組織の管理者にお問い合わせください。
ファイルのコンテンツを抽出します。
注意:
st_geometry ライブラリーは、特定のオペレーティング システムと、PostgreSQL のバージョンに対応しています。 正しいライブラリーをコピーしてください。
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ライブラリーと一緒に配置します。プロジェクトを ArcGIS Pro で開き、カタログ ウィンドウを表示した後、PostgreSQL スーパーユーザーとしてデータベースに接続します。
データベース コネクション (
.sde) ファイルがプロジェクト フォルダーに作成されます。空間タイプの作成 ツールを開きます。
このツールは、検索 ウィンドウを使用して検索するか、データ管理ツールボックスのワークスペース ツールセットから開くことができます。
ステップ 2 で作成したデータベース接続を 入力データベース コネクション パラメーター テキスト ボックスに追加します。
SDE ユーザー パスワード パラメーター テキスト ボックスに sde データベース ユーザーのパスワードを入力します。
ヒント:
PostgreSQL データベース クラスターに sde ログイン ロールがすでに存在する場合は、入力するパスワードと既存の sde ログイン ロールのパスワードが一致する必要があります。 たとえば、これと同じデータベース クラスターにエンタープライズ ジオデータベースが含まれる場合は、すでに存在する sde ログイン ロールのパスワードをここで使用する必要があります。
表領域名 パラメーター テキスト ボックスは空白のままにします。
実行 をクリックします。
指定したデータベースの sde ユーザーのスキーマに、ST_Geometry タイプ、サブタイプ、および関数が作成されます。
ArcPy 関数の使用
ArcGIS Pro または ArcGIS Server のコンピューターで、CreateDatabaseConnection ArcPy 関数を使用してデータベース コネクション ファイル (.sde) を作成し、このファイルを使用して、PostgreSQL のスーパーユーザーとして PostgreSQL データベースに接続します。 次に、.sde ファイルと CreateSpatialType ArcPy 関数を使用して、データベースに ST_Geometry のタイプ、サブタイプ、および関数を作成します。
My Esri から
st_geometryライブラリーをダウンロードして、PostgreSQLlibディレクトリーに配置します。注意:
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ディレクトリーに配置します。
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" )CreateSpatialTypeArcPy 関数を実行して、PostgreSQL インスタンスに ST_Geometry タイプをインストールします。この例では、前のステップの接続ファイルを使用し、sde パスワードは pw0rd4sde に設定されています。
import arcpy arcpy.management.CreateSpatialType( "suserconnection.sde", "pw0rd4sde" )
ST_Geometry タイプ、サブタイプ、および関数は、データベース コネクション ファイルで指定されたデータベース内の sed ユーザーのスキーマで作成されます。