Oracle访问shape配置,调用Arcgis空间关系函数
困扰了一个星期,一直没弄明白,无意间看到了那个位置不正确,发到网上供大家参考
环境为Arcgis10.2,Oracle11gR2 64位服务端,32位客户端,工具PLSQL
1、打开D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN 目录下的listener.ora 文件(更改之前先备份一下),
之前写的是 :
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = d:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS="EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
修改为:(在后面增加st_shapelib.dll文件得存储位置)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = d:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS="EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll,D:\ProgramFiles\ArcGIS
\ArcSDE\ora11gexe\bin\st_shapelib.dll")
)
)
2、打开D:\app\Administrator\product\11.2.0\dbhome_1\hs\admin 目录下的extproc.ora文件,
最后一行原来写的是 SET EXTPROC_DLLS= ,修改为 SETEXTPROC_DLLS=ANY
3、重启 OracleOraDb11g_home1TNSListener服务 和OracleServiceORCL服务。
测试阶段:进入PLSQL,输入测试语句(我自己库中要用的语句)select count(*) from JSwtpointa,dl_jsyr b where b.objname='西岗区'
and sde.st_contains(b.shape,a.shape)=1
若提示加载外部库时出错。。。
进入sde账户,在Libraries下查看ST_SHAPELIB的属性,FILE_SPEC路劲是否正确,若不正确改成正确的。本机地址为D:\ProgramFiles
\ArcGIS\ArcSDE\ora11gexe\bin\st_shapelib.dll
若这个地址在虚拟机中,地址改成类似地址c:\progra~2\arcgis\desktop10.2\DatabaseSupport\Oracle\Windows64\st_shapelib.dll
select * from user_libraries
这个语句也可以查看外部dll的路径信息是否正确。
再次执行上述语句,正确。