shp转oracle spatial
2010年12月1日 ![]()
终于搞定了shp到oracle spatial,说下步骤和感受吧!
1 XP系统:转换工具的下载(shp2sdo.exe );下载后把此文件复制到PATH变量包含的目录下(E:\oracle\product\10.2.0\db_1\BIN)
unix系统:ftp ip 回车;输入用户名密码;cd /oracle/product/10.2.0/db_1/bin;put 直接将本机文件拖到命令窗口 回车
2 将要转的shp文件放到某个目录下(F:\SHP_DATA)
3 在dos下执行以下命令
C:\Documents and Settings\administrator>cd f:\shp_data
C:\Documents and Settings\administrator>f:
F:\SHP_DATA> 转入放置shp数据的目录
F:\SHP_DATA>shp2sdo shp_data oper_data -i id -s null -g GEOMETRY -d
运行完该命令后自动生成了
oper_data.sql和oper_data.ctl
备注:
-i id_colum指定id序列列,默认是id,即作为生成数据的唯一性标志;
-s 指定生成srid(即采用什么坐标),默认是null(虽默认为null,导入后值是0,因此要注意将插入的元数据表的该条记录的srid更新为null,否则0值在MDSYS.CS_SRS表中没有记录,在后面会出错);
-g geometry column指定sdo_geometry,默认是GEOM;
-d 代表含义是将分解后的 ctl文件(控制文件)和data文件(数据存储文件)合并到一个文件,数据存储和控制都在ctl一个文件中,
如果没有该选项,则会有单独的data文件生成,即ctl文件(控制文件)和data文件(数据存储文件);
4 F:\SHP_DATA>sqlplus dd/xxx@oracl --登陆数据库
SQL> @F:\SHP_DATA\oper_data.sql --创建表并注册到USER_SDO_GEOM_METADATA
SQL> quit --退出数据库
5 F:\SHP_DATA>sqlldr dd/xxx@oracl oper_data --导入数据 (sqlldr即sql loader工具)
6 然后升级数据到当前oracle版本:对polygon类型是必须的
SQL> execute sdo_migrate.to_current('oper_data');
7 创建空间索引 注意oper_data该记录在USER_SDO_GEOM_METADATA表中的srid为null
UPDATE OPER_DATA a SET a.geom.SDO_SRID =NULL;
UPDATE USER_SDO_GEOM_METADATA SET SRID = NULL where table_name='OPER_DATA';
CREATE INDEX INDEX_OPER_DATA_SPATIAL ON OPER_DATA(GEOMETRY)INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS('LAYER_GTYPE=POLYGON') NOPARALLEL;
中间出现的一些问题:
1、第一次导后,我想创建空间索引,但是却提示:ora-29879:使用同一个索引类型无法再列表上创建多个域索引
一查原来该表的geom字段已经有了空间索引(以为是导入数据后自动创建了空间索引,但是我第二次转的时候却可以成功创建空间索引,不知何故)
2、在shp转oracle spatial的时候,在该命令中 F:\SHP_DATA>shp2sdo shp_data oper_data -i id -s null -g GEOMETRY -d 我设-s为null,是不是null默认是0?所以创建空间索引的时候会提示srid为0的在MDSYS.CS_SRS表srid没有0值;而更新oper_data这个表的任何字段都出现错误:ora-29861:域索引标记为loading/failed/unusab
做如下更新后UPDATE USER_SDO_GEOM_METADATA SET SRID = NULL where table_name='OPER_DATA'; 空间索引和表都可以更新了。
原因分析:导致OPER_DATA该表无法更新是因为该表的空间索引创建的问题,因为在最开始shp转oraclespatial的时候,对于srid值(坐标系统值,因为上海的坐标系统比较特殊,所以我就将该值设为null)设为了null,而null在数据库里面默认为了0,而0值在MDSYS.CS_SRS表又没有这个定义,所以导致了这样的错误
因此如果想设srid为0,那么直接不要指定-s参数,这样就会默认为空,如果指定了-s null那么数据库会默认为srid为0.
shp转oracle spatial的更多相关文章
- Oracle Spatial导入shp数据
现在开始尝试用oracle spatial管理空间数据,刚学会shp数据的导入,总结如下.oracle11g安装后,已经有了oracle spatial组件,我们只需要用shp2sdo.exe工具,就 ...
- 简析将shp导入Oracle并利用geoserver将导入的数据发布
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.环境准备 1.1 软件准备 首先要安装有支持空间数据的Oracle ...
- Oracle Spatial中SDO_Geometry详细说明[转]
在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及基于Oracle Spatial的SDO_Geometry等 ...
- Oracle Spatial中SDO_Geometry说明
Oracle Spatial中SDO_Geometry说明 在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及 ...
- Oracle Spatial操作geometry方法
Oracle Spatial中SDO_GEOMETRY类型: CREATE TYPE SDO_GEOMETRY AS OBJECT( SDO_GTYPE NUMBER,--几何类型,如点线面 SDO_ ...
- Oracle spatial抽稀函数(SDO_UTIL.SIMPLIFY)
在使用Oracle spatial做空间查询和展示时,经常会遇到展示或者查询过慢,这时候我可以通过空间数据抽稀来优化查询展示效率. 在Oracle spatial中的抽稀函数为:SDO_UTIL.SI ...
- Oracle spatial 空间修正函数(SDO_UTIL.RECTIFY_GEOMETRY)
Oracle spatial有个空间修正函数SDO_UTIL.RECTIFY_GEOMETRY,它可以修复以下可能:a.重复节点 b.自相交 c.坐标串朝向不正确. 该函数的构造函数格式: SDO_U ...
- Oracle Spatial GIS相关研究
1.Oracle Spatial 概念相关 Oracle Spatial 是Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型.栅格数据类型和持续拓扑数据类型的原生数据类型.Oracle ...
- C#读取Oracle Spatial的sdo_geometry
oracle的sdo_geometry中内置get_wkt和get_wkb两个方法. 以数据库表geoms为例,此表中有id和geometry两列 try { OracleConnection con ...
随机推荐
- Java虚拟机--虚拟机字节码执行引擎
Java虚拟机--虚拟机字节码执行引擎 所有的Java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果. 运行时栈帧结构 用于支持虚拟机进行方法调用和方 ...
- 【Tomcat】Tomcat集群session管理
网上资料汇总: 关于 tomcat 集群中 session 共享的三种方法 Tomcat7集群共享Session 基于redis进行统一管理
- vue 教程
1.安装 nodejs,检测 nodejs 环境(node -v). 2.安装vue-cli脚手架npm install vue-cli -g 3.在电脑的某个盘中创建项目,之后进入该项目. 4.初始 ...
- [HNOI2011]括号修复
设\(nd[4]\) 0--多出来的右括号 1--多出来的左括号 2--取反后多出来的右括号 3--取反后多出来的左括号 这样一来 Swap: swap(0,3),swap(1,2),swap(sn[ ...
- CSS隐藏多余的文字
效果: <p><strong>商品名称:</strong>新鲜现摘云南绥江半边红李子甜脆脱骨李6斤当季绿色有机水果包邮</p></div> ...
- element-ui 中的table的列隐藏问题
element-ui 中的table和bootstrap中的table的某些设置还是有一定的差别的.之前用bootstrap做的表格,想要实现简短列和详细列的切换.因为详细列实在有太多列了,拉动滚动条 ...
- Linux CentOS 6.5 + Apache + Mariadb + PHP环境搭建
Web自动化测试-服务端测试环境部署 by:授客 目录 一. 二. 三. 四. 五. 六. 七. 八. 九. 十. 操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.c ...
- springboot 学习之路 17(webflux 入门 (1))
Webflux: webflux是在springboot2系列引入的技术:补充一些概念: 1> Reactive Streams 是 JVM 中面向流的库标准和规范: 处理可能无限数量的元素 按 ...
- Intellij IDEA去除@Autowired下划线红色提示
Intellij IDEA通过@Autowired注入的对象,在不改变配置的情况下一直有红色下划线,虽然不影响运行,但是跟小Alan一样有强迫症的肯定受不鸟. 那么怎么去除它呢? 解决方式:改变@Au ...
- apache web服务器安全配置
尽管现在购买的云服务器很多都有一键web环境安装包,但是如果是自己配置web环境则需要对各种安全配置十分了解,今天我们就来尝试这做好web服务器安全配置.这里的配置不尽完善,若有纰漏之处还望指出. 修 ...