ST_Geometry 関数呼び出し

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

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

SQLite の場合、ST_Geometry 関数は C の ST_Geometry ライブラリで実装されています。ST_Geometry 関数を使用するには、ST_Geometry ライブラリにアクセスする必要があります。

PostgreSQL

st_geometry ライブラリは、PostgreSQL が ST_Geometry 関数にアクセスできるよう、PostgreSQL インストール ディレクトリに格納する必要があります。Windows の st_geometry.dll ファイルを、PostgreSQL インストール ディレクトリの lib フォルダにコピーする必要があります。Linux サーバの場合は、Linux の st_geometry.so ファイルを、PostgreSQL サーバの /usr/lib/pgsql ディレクトリにコピーします。これらのファイルは、両方とも、ArcGIS クライアントのインストール場所の DatabaseSupport フォルダにあります。

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 セッションが切断されると終了します。

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

SQLite

SQLite クライアントが SQL 関数にアクセスできるようにするには、ST_Geometry ライブラリの場所を指定して、ライブラリを読み込む必要があります。ライブラリの場所は、クライアントの PATH(Windows)または LIBPATH(Linux)システム環境変数で設定したり、ST_Geometry ライブラリを読み込むときにパスで指定したりできます。手順については、「SQLite の ST_Geometry ライブラリの読み込み」をご参照ください。

関連トピック

5/25/2014