ST_Geometry 函数调用

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

在 Oracle 或 PostgreSQL 数据库中使用 SQL 函数访问 ST_Geometry 列时,将直接访问数据库;因此,数据库必须能够访问 ST_Geometry 函数。在 Oracle 中,数据库也生成 extproc 进程。

在 SQLite 中,ST_Geometry 函数在 ST_Geometry 库中使用 C 语言实现。必须访问 ST_Geometry 库才能使用 ST_Geometry 函数。

PostgreSQL

St_geometry 库必须存储在 PostgreSQL 安装目录中,以便 PostgreSQL 能够访问 ST_Geometry 函数。您必须将 st_geometry.dll (Windows) 文件复制到 PostgreSQL 安装目录的 lib 文件夹中。对于 Linux 服务器,将 st_geometry.so (Linux) 文件复制到 PostgreSQL 服务器上的 /usr/lib/pgsql 目录中。在 ArcGIS 客户端安装的 DatabaseSupport 文件夹中可以找到这两个文件。

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 会话断开连接时终止。

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

SQLite

必须指定 ST_Geometry 库的位置并进行加载,以便 SQLite 客户端能够访问 SQL 函数。可以在客户端的 PATH (Windows) 或 LIBPATH (Linux) 系统环境变量中设置库的位置,然后加载库;或者可以在加载 ST_Geometry 库时指定路径。有关说明,请参阅加载 SQLite ST_Geometry 库

相关主题

5/25/2014