可使用数据库管理系统 (DBMS) 的结构化查询语言 (SQL)、数据类型和表格式来处理地理数据库或安装了 ST_Geometry 类型的数据库中所存储的信息。

例如,在ArcMap中我们使用"相交"工具进行空间操作;ArcObject接口里用ITopologicalOperator.Intersect来实现。现在,我们可以脱离接口,实现数据的空间操作,从性能和架构的角度来说,这值得深入研究。在Sql Server中用STIntersects方法,在Oracle中使用SDO_FILTER(注意这里不叫SDO_Intersects哈),在ArcGIS中用sde.st_intersects方法。

Sql Server方法:https://msdn.microsoft.com/zh-CN/library/bb933960.aspx

Oracle方法:https://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_operat.htm#SPATL110

ArcGIS方法:http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/006z000000ws000000

为了方便重用,我们使用了ArcGIS中的方法。但遇到一个配置错误!

错误

执行ST_Geometry

"ERROR at line 1:

ORA-28595: Extproc agent : Invalid DLL Path

ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 170

ORA-06512: at "SDE.ST_RELATION_OPERATORS", line 303"

即语法没有错误,只是不能调用DLL,在 Oracle 中,ST_Geometry 和 ST_Raster 的 SQL 函数使用通过 Oracle 的外部过程代理(即 extproc)访问的共享库。Oracle 必须能够访问这些库。因此,这些库必须存在于 Oracle 服务器上,并且必须通过 Oracle 的外部过程框架调用它们。

显示是没找到这个些dll,按照官网的解决方法,总是启动不了oracle监听服务。

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

解决

1.找到dll,其实它依靠两个dll,一是st_shapelib.dll,ST_Geometry的库,二是libst_raster_ora.dll,ST_Raster的库。它们的路径位于:

ArcSDE下的路径:

C:\Program Files (x86)\ArcGIS\ArcSDE\ora10gexe\bin\st_shapelib.dll;
C:\Program Files (x86)\ArcGIS\ArcSDE\ora10gexe\bin\libst_raster_ora.dll

  

ArcDeskop下的路径

D:\Program Files\ArcGIS\Desktop10.4\DatabaseSupport\Oracle\Windows64\st_shapelib.dll;
D:\Program Files\ArcGIS\Desktop10.4\DatabaseSupport\Oracle\Windows64\ libst_raster_ora.dll;

  

2.新建环境变量:新建一个系统环境变量

变量名:EXTPROC_DLLS

变量值:两个dll的全路径,中间用分号隔开,如C:\sdedll\st_shapelib.dll;C:\sdedll\libst_raster_ora.dll

(这里是将两个dll添加到新建的sdedll文件夹中的,因为服务器上可能没有安装sde服务器)

3.重启服务:重新启动oracle监听服务OracleOraDb10g_home1TNSListener

参考

http://support.esri.com/technical-article/000009074

http://p385579058.iteye.com/blog/1042187

http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/006z0000001w000000/

Oracle空间查询 ORA-28595的更多相关文章

  1. Oracle 空间查询, 数据类型为 sdo_geometry

    因网上搜索到的相关资料大部分都是关于sdo_geometry的介绍和以及通过sql语句添加要素,查询要素等等.没有找到存储过程相关的例子,所以只好自己动手啦. 准备 环境:windowsxp系统,安装 ...

  2. oracle 空间大小查询

    一.表空间大小 select b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes / 1024 / 1024 大小M, (b.bytes - sum(n ...

  3. Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令

    Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令 ------------------------------------------------------------------ ...

  4. Oracle spatial空间查询的选择度分析

    在上一篇中,我用一个案例演示了对于数值或字符串类型的字段,选择度的计算方法.并证明了当字段值的选择度不同时,将会影响CBO选择最终的执行计划.对于可排序的字段类型,选择度计算模型已经有很多人写博客介绍 ...

  5. Oracle表和表空间查询

    用户查询 查询和用户相关的数据 创建用户 CREATE USER user IDENTIFIED BY password [DEFAULT TABLESPACE tablespace] [TEMPOR ...

  6. ORACLE表空间查询和管理【转】

    红色是自由指定的~~--查询表空间SELECT D.TABLESPACE_NAME,       SPACE "SUM_SPACE(M)",       SPACE - NVL(F ...

  7. oracle 全部查询和表空间,以及其关系

    select * from dba_users;   查看数据库里面全部用户,前提是你是有dba权限的帐号.如sys,system select * from all_users;     查看你能管 ...

  8. 各种oracle参数查询语句

    各种oracle参数查询语句 1.show parameter:--显示各个系统参数配置 2.select * from v$parameter;--显示各个系统参数配置 2.show paramet ...

  9. oracle提高查询效率的34条方法

    注:本文来源:远方的守望者  <oracle提高查询效率的34条方法> oracle提高查询效率的34条方法 1.选择最有效率的表名顺序 (只在基于规则的优化器中有效): ORACLE的解 ...

随机推荐

  1. (十) Jquery的基本使用

    一.引入 注意:如果在index.js中有使用到JQuery.js 那么JQuery.js文件必须比index.js文件先引入,否则index.js文件中不能使用JQuery.js. <scri ...

  2. ajax天气查询

    直接法伤代码: <!DOCTYPE html><html><head>    <meta charset="utf-8" />    ...

  3. 设置node服务器的端口及运行环境

    一般来说,node服务器中通常会看到这样的代码: ``` app.set('port', process.env.PORT || 3000); if ( process.env.NODE_ENV == ...

  4. php线程安全与非线程安全版的区别

    Thread Safe(线程安全)和 None Thread Safe(非线程安全) 背景: Linux/Unix系统采用多进程的工作方式,而Windows系统采用多线程的工作方式. CGI模式是建立 ...

  5. JavaScript实现

    JavaScript实现 Javascript实现虽然JavaScript和ECMAScript通常都被人们用来表达相同的含义,但JavaScript的含义却比ECMA-262中规定的要多得多.没错, ...

  6. Grunt usemin

    yeoman/grunt-usemin 用来将 HTML 文件中(或者 templates/views)中没有优化的 script 和 stylesheets 替换为优化过的版本. usemin 暴露 ...

  7. Linux之wc命令

    wc - print newline, word, and byte counts for each file 为文件打印行数,字符数,字节数 参数: -l  仅列出行 -w  仅列出多少字(英文单字 ...

  8. Unity无缝循环世界实现

    一年前曾经碰到过已无限世界为题材的游戏开发比赛,虽然对比赛没有兴趣,但是对这个题材倒是有点想法.如何通过unity3d实现无缝的循环世界呢. 有一种想法是动态生成,一块场景一块场景进行动态加载.(做过 ...

  9. 关于JDEV的连接问题

    在JDev中有两个连接数据哭库的地方,双击项目名称,里面的Business Components里面的Connection里面的链接,这个链接是Run页面时候的链接 第二个链接在Oracle Appl ...

  10. Cassandra存储time series类型数据时的内部数据结构?

        因为我一直想用Cassandra来存储我们的数字电表中的数据,按照之前的文章(getting-started-time-series-data-modeling)的介绍,Cassandra真的 ...