用处:进行此配置后,可以用sql语言,与sde空间数据库进行空间查询,增删改图层的要素等

PS:同时也是解决 ORA-28595Extproc 代理 DLL 路径无效 的方法

ORA-06512: 在 "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 70

ORA-06512: 在 "SDE.ST_GEOMETRY_OPERATORS", line 68

注意:当arcgis版本为10.4(以上也可能是,具体看官网文档)时,需要安装vc++ 2013 64位运行环境,依据为esri官方文档

配置sde使可以使用sde sql(ST_Geometry)操作空间数据-LMLPHP

在SDE的安装目录找到如下文件:C:\Program Files\ArcGIS\ArcSDE\ora11gexe\bin\st_shapelib.dll

PS:arcgis 10.3或更新版本,没有了sde产品的安装包(也就没sde安装目录),那st_shapelib.dll可以在arcgis desktop或arcgis server的安装目录下找到(具体文件所在位置自行搜索)

复制到oracle的目录下

D:\app\Administrator\product\11.2.0\dbhome_1\BIN

用sde用户登录plsql

执行sql

create or replace library ST_SHAPELIB  as 'D:\app\Administrator\product\11.2.0\dbhome_1\BIN\st_shapelib.dll';

其中dll的文件路径要改一下,改成上一步复制后的文件路径

再执行

alter package sde.st_geometry_shapelib_pkg compile reuse settings;

用SDE用户登录plsql,能看到如下两个对象则说明成功

配置sde使可以使用sde sql(ST_Geometry)操作空间数据-LMLPHP

PS:有时执行完上述两句sql后,图标有个红色X

配置sde使可以使用sde sql(ST_Geometry)操作空间数据-LMLPHP

此时只要recompile就行

配置sde使可以使用sde sql(ST_Geometry)操作空间数据-LMLPHP


以下开始补充在linux 服务端的配置:

某次项目的情况,sde(oracle版)服务端是linux系统,其他环境为:arcgis 10.7,oracle12c R2

Linux与win的不同在于拷st_shapelib文件的位置不同,其他还是参考win版的方法

st_shapelib文件在arcmap 10.7的位置(只有64位,不用考虑位数问题了)

libst_shapelib.so相当于win版的st_shapelib.dll文件,然后其他操作都是一样的

配置sde使可以使用sde sql(ST_Geometry)操作空间数据-LMLPHP

PS:我们用于配置的plsql可以在客户端(跟服务端不是一台机器),但是libst_shapelib.so文件路径依然是服务端的本地路径,因为调用libst_shapelib.so还是在服务端调用,所以不用考虑为什么客户端里配服务端本地路径的问题

05-11 13:04