Oracle11g结合ArcGIS10.2建立空间数据库ST_Geometry类库配置问题

本文介绍了解决在配置空间数据库过程中遇到的ST_Geometry类库问题的方法。通过调整Oracle实例配置、修改类库路径及配置extproc等步骤,最终实现了空间数据库的成功建立。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近笔者用到了空间数据库,按照网上已有教程进行配置和建库后出现了部分关于ST_Geometry类库问题,在查阅资料折腾了调配后终于解决,遂作本文仅供交流参考。

首先利用ArcToolbox中数据管理工具下的“创建企业级地理数据库”功能进行建库,如图1

图1

之后进行参数配置,如图2


图2

而后确定,根据网上参考的教程完成本部分工作后等待处理完成即可建立其空间数据库且可以向其中加入多种类型的空间数据,如图3。若建立的为普通数据库而非空间数据库则其建立的要素则只有三种,如图4


图3 图4

然而完成后结果依然如图4所示,所以打开地理处理查看是否在处理过程中存在错误,随即在结果的消息下找到错误信息:ST_Geometry 形状库路径可能无效,或者未在 Oracle 实例中正确配置 EXTPROC。 [ (Unable to determine current version of ST_SHAPELIB. Please check the ST_Geometry shape library path on the Oracle server, which is set to "c:\progra~2\arcgis\desktop10.2\DatabaseSupport\Oracle\Windows64\st_shapelib.dll". Refer to the ArcGIS help topics for more details.如图5


图5

根据内容可知问题的所在就是ST_Geometry类库没有正确配置,系统在"c:\progra....."路径下找不到st_shapelib.dll文件。找到了问题就可以着手解决,我们可以有两种解决方式:1、将st_shapelib文件复制到相应文件夹下。2、可以将oracle数据库中类库路径进行修改,修改到计算机安装ArcSDE文件夹下,找到dll包位置为路径赋值。消息中提示extproc配置不正确,所以我们还需配置extproc。首先停止lsnrctl服务,打开oracle数据库安装目录找到lisener.ora文件打开,内容如下:

# listener.ora Network Configuration File: D:\app\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\app\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )


LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

需要将 (PROGRAM = extproc)后一行中加入st_shapelib.dll的路径,修改后为:(ENVS = "EXTPROC_DLLS=ONLY:C:\Program Files\ArcGIS\ArcSDE\ora11gexe\bin\st_shapelib.dll")。

其次要对安装目录下的hs/admin中extproc.ora文件进行配置,如本实例中路径为D:\app\product\11.2.0\dbhome_1\hs\admin\extproc.ora将文件内最后一行“SET EXTPROC_DLLS=”改为“SET EXTPROC_DLLS=ANY”。

配置完extproc后,还要在数据库中对与引用类库进行配置,先用sql语句查询当前用户是否存在相应类库引用定义

      select library_name from user_libraries;


结果如图6所示


图6

查看没有ST_SHAPELIB名的类库引用定义后,需要定义一个引用,sql语句:

    create or replace library ST_SHAPELIB  
  2  as 'C:\Program Files\ArcGIS\ArcSDE\ora11gexe\bin\st_shapelib.dll';  
  3  /  
完成配置后重启oracle实例与lsnrctl服务,尝试按照上述步骤建库,建立后依然提示相应的问题,而后通过分析发现问题所在。当建立空间数据库时ArcGIS会生成一个新的用户,用户名就是图2中可选定义的表空间名称,而在生成新的用户时ArcGIS会在oracle服务器中自动为用户初始化生成一个ST_Geometry类库引用路径,其值为"c:\progra~2\arcgis\desktop10.2\DatabaseSupport\Oracle\Windows64\st_shapelib.dll"。所以即使你在sys用户下定义了ST_SHAPELIB类库引用也是作用于sys用户,而新生成的用户下会默认按照ArcGIS初始化路径进行调用ST_Geometry方法,建库时依然会出错。所以如果遇到这种情况。应当首先查阅oracle整个系统中ST_SHAPELIB定义情况,sql语句如下:
      SQL> select * from dba_libraries where library_name='ST_SHAPELIB';
若新建的空间数据库用户下的ST_SHAPELIB路径值是ArcGIS默认初始化值,则根据上述步骤在次用户下进行同样处理后再于ArcGIS中添加新建的空间数据库用户的数据库连接,连接后问题即可解决。ST_Geometry库中的空间方法内容都可调用,空间数据库建立成功。(注:ArcGIS默认下一个oracle实例下只能建立一个空间数据库,若最初建立的数据看有问题需要利用sql语句进行用户和表空间所有内容及数据文件的删除
     SQL> SQL> drop user sde cascade;
     SQL> SQL> drop tablespace sde including contents and datafiles;

  end

by cobramonkey

 

参考资源链接:[ArcGIS 10.2教程:SQLite离线数据库空间数据操作详解](https://wenku.csdn.net/doc/6hoo4ekaf0?utm_source=wenku_answer2doc_content) 在ArcGIS 10.2中,创建并管理包含ST_GEOMETRY空间数据类型的SQLite离线数据库需要一定的操作流程和技巧。首先,根据《ArcGIS 10.2教程:SQLite离线数据库空间数据操作详解》的指导,你可以从创建一个新的SQLite数据库开始。接下来,你需要使用ArcGIS提供的工具和函数来定义数据库结构和添加空间数据列。 首先,你需要安装ArcGIS Desktop 10.2,并确保已经安装了Spatial Analyst和3D Analyst扩展模块,因为这些模块提供了对ST_GEOMETRY类型的支持。然后,你可以使用ArcCatalog或ArcMap来创建一个新的数据库文件。 例如,你可以使用以下SQL语句创建一个带有ST_GEOMETRY类型的表: ```sql CREATE TABLE spatial_table ( fid INTEGER PRIMARY KEY AUTOINCREMENT, geom ST_GEOMETRY ); ``` 在这里,`geom`字段被定义为ST_GEOMETRY类型,它允许你存储空间数据。接下来,你可以通过ArcGIS空间数据导入工具,将你的空间数据(如shapefiles或feature classes)导入到SQLite数据库中。在这个过程中,ArcGIS会自动处理数据类型转换,确保空间数据的正确存储。 在数据库创建和数据导入完成后,你可以使用标准的SQL查询和ArcGIS空间分析工具来操作和查询数据库中的空间数据。例如,查询特定地理区域内的数据记录: ```sql SELECT * FROM spatial_table WHERE ST_Intersects(geom, 'POLYGON((...))'); ``` 这个查询返回所有在指定多边形内的空间对象。为了更好地理解和操作这些数据,你应该熟悉ArcGIS提供的SQL函数,如ST_Intersects、ST_Contains等。 完成这些步骤后,你将拥有一个可以在ArcGIS 10.2中有效操作的SQLite离线数据库,其中包含了ST_GEOMETRY类型的空间数据。为了深入掌握这些知识,建议参考《ArcGIS 10.2教程:SQLite离线数据库空间数据操作详解》,其中不仅提供了基础概念的解释,还有丰富的示例和操作指南,帮助你解决在实际应用中可能遇到的问题。 参考资源链接:[ArcGIS 10.2教程:SQLite离线数据库空间数据操作详解](https://wenku.csdn.net/doc/6hoo4ekaf0?utm_source=wenku_answer2doc_content)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值