配置sde使可以使用sde sql(ST_Geometry)操作空间数据
用处:进行此配置后,可以用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的安装目录找到如下文件: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,能看到如下两个对象则说明成功
PS:有时执行完上述两句sql后,图标有个红色X
此时只要recompile就行
以下开始补充在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文件,然后其他操作都是一样的
PS:我们用于配置的plsql可以在客户端(跟服务端不是一台机器),但是libst_shapelib.so文件路径依然是服务端的本地路径,因为调用libst_shapelib.so还是在服务端调用,所以不用考虑为什么客户端里配服务端本地路径的问题