这个题目比较怪异,表达的目的就是因为许多用户有这两个问题一直悬而未决
1:我可以在不使用ArcSDE的情况下,使用ArcGIS来操作OracleSpatial数据么?
回答:可以。ArcGIS10新的Query Layer就可以实现这个问题
2:用户继续追问,你们不是说Esri的ST_geometry存储要比Oracle的OracleSpatial效率要高么,那我在不使用ArcSDE的情况下,使用ArcGIS可以操作ST_Geometry存储的数据么?
回答:可以,如果你购买了ArcGIS10.1版本的软件,在ArcGIS10.1版本有一个GP工具名字叫:Create Spatial Type,就解决了用户在不使用ArcSDE的情况下,也可以在数据库创建Esri高效能的ST_geometry对象,那么用户就可以使用ST_Geometry存储管理了。
那么我们接下来就看看ArcGIS10.1这个比较特殊的功能。
该功能位置:Data ManagementTools-Workspace-Create Spatial Type
目前该功能只支持Oracle数据库和PostgreSQL数据,使用该功能可以创建ST_GeometrySQL类型,子类型,以及功能函数,该功能最大的作用是数据库可以使用ST_geometry存储而不用Geodatabase。
打开该界面,就有一个输入框,需要输入Theinput_workspace,那么这是什么呢?
误区:一开始我对这个Theinput_workspace的理解是,因为我们目前不安装ArcSDE软件自然没有ArcSDE服务,数据库里面并没有ArcSDE的Schema自然也没有直连,那么我就认为是不是普通的数据库连接,也就是oleDB这种方式,但是我几次加载这个链接,直接将ArcMap崩溃掉,这肯定是不对的。
仔细一看,相关帮助
Theinput_workspace is the database connection file (.sde) that connects to theOracle or PostgreSQL database. You must connect as a database user named sdeand that user must have the privileges necessary to install it.
这里面传递了至少有三个信息
1:这个连接是×××××××××××××××.sde
2:必须连接用户为sde命名的
3:该sde用户需要必要的权限
后两个信息非常好理解,其实这和原来的安装ArcSDE创建相关用户、赋予权限类似,针对第一个信息,这个其实也是ArcGIS10.1的新特性,就是我们可以创建一个对数据库的直连连接,GP位置:Data Management Tools-Workspace-Create Enterprise Geodatabase,
其实看到这个图应该非常简单,输入相关的实例名(netservicename)用户名、密码即可,但是它与oledb的区别就是它可以识别自定义的数据类型,例如oracle spatial,st_geometry等,具有这种对象的图标也发生了变化。
其实这个功能最大的好处就是我们可以通过ArcMap直接连接Oracle数据库操作以OracleSpatial的数据,我们也可以创建相关的Oracle Spatial存储的要素类等,如果说ArcGIS10是使用QueryLayer可以对Oracle Spatial进行操作进行试水的话,那么ArcGIS10.1就算是完全放开了,直接连接就可以对Oracle Spatial编辑管理了。
那么针对后两个,如果不按那么的要去创建Sde用户以及赋予权限就会报如下错误:
[Mon Oct 24 14:31:24 2011] ST_Geometry Schema Owner: () Type Release: 0 [Mon Oct 24 14:31:24 2011] Instance initialized for ((test)) . . . [Mon Oct 24 14:31:24 2011] Only the SDE admin user is allowed to upgrade the master instance [Mon Oct 24 14:31:24 2011] ERROR setting up St_Geometry, Error = -25
Executing: CreateSpatialType C:\Users\esrichina\Desktop\1.sde Start Time: Mon Oct 24 14:29:04 2011 User does not have required privileges to create ESRI Spatial type. [ (To install your ArcSDE for Oracle geodatabase, the following additional permissions need to be granted to the sde user: GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE INDEXTYPE, CREATE LIBRARY, CREATE PUBLIC SYNONYM, DROP PUBLIC SYNONYM, ADMINISTER DATABASE TRIGGER, CREATE OPERATOR TO sde; )] Failed to execute (CreateSpatialType). Failed at Mon Oct 24 14:29:04 2011 (Elapsed Time: 0.00 seconds)
创建成功后系统会有如下提示
Executing: CreateSpatialType C:\Users\esrichina\Desktop\1.sde Start Time: Wed Oct 26 14:13:47 2011 User has required privileges to create ESRI Spatial type. Created ESRI spatial type. Succeeded at Wed Oct 26 14:14:24 2011 (Elapsed Time: 37.00 seconds)
那么我们可以在PL/SQL里面查看
相关的包、类型、包体、Lib包、相关的投影表都会被创建,活脱就是一个MINI版本的ArcSDE Schema(可惜不包括GDB、版本表等)
-------------------------------------------------------------------------------------------------------