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的路径信息是否正确。
 
再次执行上述语句,正确。
posted @ 2016-07-07 14:48  开发界的小菜鸟  阅读(1095)  评论(0编辑  收藏  举报