ST_Geometry 関数呼び出し

Oracle と PostgreSQL の ST_Geometry 関数は、SQL(Structured Query Language)で実装されます。これはデータベース レベルの言語です。Oracle の場合は、PL/SQL(Procedural Language Structured Query Language)です。PostgreSQL の場合は PL/pgSQL です。

SQL 関数で ST_Geometry 列にアクセスする際には、データベースに直接アクセスすることになります。したがって、データベースが ST_Geometry 関数にアクセスできる必要があります。Oracle の場合、データベースは extproc プロセスも使用します。

PostgreSQL

st_geometry ライブラリは、PostgreSQL が ST_Geometry 関数にアクセスできるよう、PostgreSQL インストール ディレクトリに格納する必要があります。ArcSDE for PostgreSQL インストール ウィザードで PostgreSQL と同じ Windows サーバ上に ArcSDE をインストールすると、st_geometry.dll が PostgreSQL lib フォルダにコピーされます。データベースが ArcSDE 以外のサーバ上にある場合、または Linux サーバにインストールする場合は、ライブラリを手動で PostgreSQL のインストール ディレクトリにコピーする必要があります。Linux サーバーでは、st_geometry.so ライブラリを /usr/lib/pgsql ディレクトリにコピーします。

Oracle

関数は PL/SQL で実装されており、これによって、C プログラミング言語で記述された外部共有ライブラリ ファイルに格納されている関数が呼び出されます。関数は、ライブラリ名(Oracle の ST_Geometry の場合は ST_SHAPELIB)をライブラリ ファイル名にマップするエイリアス名で PL/SQL から呼び出されます。(詳細については、Oracle の CREATE LIBRARY コマンドに関するドキュメントをご参照ください。)ST_SHAPELIB を必要とする空間タイプ関数が初めて呼び出されたときには、SQL セッションに対する extproc プロセスの生成がデータベースからリスナーにリクエストされます。extproc には、ST_SHAPELIB の場所、呼び出す関数の名前、およびそのパラメータが渡されます。extproc によって ST_SHAPELIB が読み込まれ、関数が呼び出されます。外部関数が完了すると、extproc は結果を返し、アクティブ状態のままこのセッションで追加の関数呼び出しを待ちます。extproc プロセスは、SQL セッションが切断されると終了します。

この機能を使用するためには、以下の設定が必要です。


7/10/2012