OracleSpatial存储与ArcSDE存储相互转换
来源:互联网 发布:java调用windows api 编辑:程序博客网 时间:2024/04/29 08:00
怎样将OracleSpatial的数据转换到ArcSDE库里面
现在越来越多的用户使用OracleSpatial进行存储,那么随着之而来的问题就是我的OracleSpatial数据怎么转换到ArcSDE库里面,这个问题有两个理解方式,因为使用Oracle Spatial存储也就是使用SDO_Geometry存储,那么ArcSDE库是ST_Geometry存储,而且ArcSDE库也支持SDO_Geometry进行存储,那么题目的问题可以理解两种方式:
1:纯oracle库里面的OracleSpatial存储转换到ArcSDE库里面以SDO_Geometry存储
2:纯oracle库里面的OracleSpatial存储转换到ArcSDE库里面以ST_Geometry存储
其实差别不大,只要是在ArcSDE库里面,使用什么样的存储都是可以转换的。
一:如果你有ArcGIS Desktop10的话
这个就非常简单了,因为ArcGIS Desktop10有一个新的对象就是QueryLayer,使用这个对象就可以使ArcGIS Desktop直接读取纯Oracle 数据库里面的OracleSpatial数据库,而且在ArcMap里面可以进行图形显示,这样的话,非常简单了,图形显示出来,用户可以将这些数据直接导出成文件GDB,然后在将文件GDB导入到ArcSDE里面,是不是很容易。
相关QueryLayer参考:
二:如果你是ArcGIS Desktop9版本的话
那么还有两个可选项
1:如果用户的桌面软件安装了数据互操作以及有相关的许可,那么可以使用ETL的方式将数据进行转换
2:如果没有(估计大部分用户都没有)
也很容易,我们可以将指定的OracleSpatial数据使用IMP方式将数据导出DMP文件,然后再将这DMP导入到ArcSDE库里面,然后使用sdelayer命令进行注册
C:\Users\Administrator>sdelayer -o register -l zd_1,shape -e a -t SDO_GEOMETRY -i esri_sdeora -u test -p testArcSDE 10.0 for Oracle11g Build 2004 Fri Jan 13 11:45:40 2012Layer Administration Utility-----------------------------------------------------Successfully Created Layer.注册完毕后,我们在ArcMap查看,会报错:
One or more layers failed to draw:TEST.ZD_1: Underlying DBMS error [ORA-29902: 执行 ODCIIndexStart() 例行程序中出错ORA-13208: 对运算符 [window SRID does not match layer SRID] 求值时出现内部错误ORA-06512: 在 "MDSYS.SDO_INDEX_METHOD_10I", line 333::SELECT SHAPE, TEST.ZD_1.OBJECTID FROM TEST.ZD_1 WHERE mdsys.sdo_filter(TEST.ZD_1.SHAPE, MDSYS.SDO_GEOMETRY(:gtype1,:srid1,NULL,:elem_info1,:ordinates1), 'querytype=window') = 'TRUE'] [TEST.ZD_1]
这是因为没有设置SRID的原因,这里面有一个小小的捷径,我们怎么才能知道我们这个图层的SRID呢,对OracleSpatial来说,我们知道它的投影信息,那么我们可以使用ArcCatalog新建一个要素类,该要素类的投影与OracleSpatial的投影一致,而且在存储时我们以SDO_GEOMETRY(选择该关键字即可)进行存储即可,那么我们就可以查看相关的SRID
C:\Users\Administrator>sqlplus sde/sde@orclSQL*Plus: Release 11.2.0.1.0 Production on 星期四 5月 24 10:21:47 2012Copyright (c) 1982, 2010, Oracle. All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select srid from layers where table_name='ZD_2' and layer_config='SDO_GEOMETRY'; SRID---------- 20然后我们删除出错的图层,重新导入IMP,重现注册
C:\Users\Administrator>sdelayer -o register -l zd_1,shape -e a -t SDO_GEOMETRY -R 20 -i esri_sdeora -u test -p testArcSDE 10.0 for Oracle11g Build 2004 Fri Jan 13 11:45:40 2012Layer Administration Utility-----------------------------------------------------Successfully Created Layer.这样就可以了
三:使用Oracle自带工具
OracleSpatial自带了sdo2shp来进行转换,可以将OracleSpatial转换为shapefile,然后用户使用shapefile导入到ArcSDE里面
相关参考
将ArcSDE的数据导出OracleSpatial
这个也比较容易
1:如果有数据互操作扩展,使用ETL来实现
2:如果没有,可以将你的ArcSDE库里面的数据,以OracleSpatial方式进行存储,然后通过Oracle的方式IMP等,将DMP文件导入到Oracle数据库里面即可。
3:也可以导出成Shapefile,使用Oracle自带的shp2sdo导入
毕竟ArcGIS没有直接导出OracleSpatial的接口,所以导出的OracleSpatial是否有问题就不能保证了.
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
-------------------------------------------------------------------------------------------------------
- OracleSpatial存储与ArcSDE存储相互转换
- OracleSpatial存储与ArcSDE存储相互转换
- ArcSDE数据与索引的分开存储
- Azure 标准与高级托管磁盘存储的相互转换
- 理解ArcSDE和OracleSpatial一点诀窍
- postgresql 存储过程函数:时间戳与日期字符串相互转换
- 触发器与存储过程的相互调用
- 触发器与存储过程的相互调用
- YUV格式转换与存储
- 图片存储与转换处理
- char型数据存储成Int(16进制值相互转换)
- ArcSDE Oracle的存储DBTune配置
- ArcSDE Oracle的存储DBTune配置
- ArcSDE 设置DBTUNE参数存储BLOB列
- ArcSDE数据库连接(直连、服务连)与GT_Geometry存储配置图解
- ArcSDE数据库连接(直连、服务连)与GT_Geometry存储配置图解
- ArcSDE数据库连接(直连、服务连)与GT_Geometry存储配置图解
- ArcSDE数据库连接(直连、服务连)与GT_Geometry存储配置图解
- 查出锁表和杀掉进程的sql
- ESPlatform 群集平台(00) -- 概念与模型
- 雷锋微视点:手游联盟控告百度,胜诉仅获赔7000元
- E420加装SSD,小黑升级啦,笔记本升级固态硬盘参考
- 3字符串求最长公共自序列
- OracleSpatial存储与ArcSDE存储相互转换
- ESPlatform 群集平台(01) -- 迁移到群集平台
- TLV 格式及编码
- 用C扩展PHP[转]
- ELO Rating排名系统
- 线长了,损失了0.5V电压
- ESPlatform 群集平台(02) -- 从外部访问群集
- 在Ubuntu上安装Net-Snmp
- rpm卸载时遇到"xxx specifies multiple packages"的问题