ArcGIS Desktop

  • 文档
  • 支持

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

ST_Geometry 函数调用

  • PostgreSQL
  • Oracle
  • SQLite

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

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

  • 数据库需要知道包含 ST_SHAPELIB 的文件的位置,这样才能将位置信息传递到侦听器进程,最后传递到 extproc。
  • 如果在 user_libraries 表中,ST_SHAPELIB 的 file_spec 与服务器上 ST_SHAPELIB 的物理文件位置不匹配,ST_Geometry 运算符和函数将不起作用。因此,您必须在 Oracle 用户库中更新库定义,从而在使用 CREATE LIBRARY 命令时,将正确的库路径包含到具有 ST_SHAPELIB 的文件中。
    注:

    更改库路径的定义将使引用库的包正文失效,因此应使用 Oracle 重新编译某些 ArcSDE 存储过程的包正文。

  • 数据库必须了解处理 extproc 请求的服务。在文件 tnsnames.ora 中配置。
  • 必须允许 extproc 加载包含 ST_SHAPELIB 的文件。通过定义 listener.ora 文件 (Oracle 10g) 或 extproc.ora 文件 (Oracle 11g) 中的环境变量 EXTPROC_DLLS 实现此目的。
  • extproc(通常以拥有 ORACLE_HOME 的用户身份运行)必须对库文件的位置具有读取权限,并且对文件具有执行权限。
  • 如果更改 listener.ora 文件,必须重新启动侦听器。

SQLite

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

相关主题

  • 配置 Oracle extproc 以使用 SQL 访问地理数据库

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • 内部人员博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2017 Esri. | 隐私政策 | 法律声明