ST_Geometry 函数调用

Oracle 和 PostgreSQL 中的 ST_Geometry 函数采用结构化查询语言 (SQL) 实现。这是一门数据库级语言。在 Oracle 中,即为“面向过程的结构化查询语言 (PL/SQL)”。在 PostgreSQL 中,即为 PL/pgSQL。

如果使用 SQL 函数访问 ST_Geometry 列,则直接访问数据库。因此,数据库必须能够访问 ST_Geometry 函数。在 Oracle 中,数据库也生成 extproc 进程。

PostgreSQL

St_geometry 库必须存储在 PostgreSQL 安装目录中,以便 PostgreSQL 能够访问 ST_Geometry 函数。如果使用 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 编程语言编写的外部共享库文件中调用函数。函数通过 PL/SQL 使用将库名称映射到库文件名称的别名进行调用,对于 Oracle 中的 ST_Geometry,即使用库 ST_SHAPELIB 的名称映射到库文件的名称。(有关详细信息,请参阅 Oracle CREATE LIBRARY 命令的相关文档。)首次调用空间类型函数需要 ST_SHAPELIB,数据库请求侦听器为 SQL 会话生成 extproc 进程。将为 extproc 给定 ST_SHAPELIB 的位置、要调用函数的名称及其参数。extproc 会加载 ST_SHAPELIB 并调用函数。在此会话期间,当外部函数完成调用时,extproc 会返回结果并保持活动状态,等待其他函数调用。extproc 进程会在 SQL 会话断开连接时终止。

要执行此操作,需要以下配置:


3/7/2012