现在开始尝试用oracle spatial管理空间数据,刚学会shp数据的导入,总结如下。oracle11g安装后,已经有了oracle spatial组件,我们只需要用shp2sdo.exe工具,就可以将空间数据导入数据库中。
shp2sdo.exe工具下载:
在电脑上oracle客户端配好连接,在本地就能上传数据到服务器。将shp2sdo.exe工具和要导入数据库的空间数据放到一个文件夹中,比如E:shp_data文件夹中。然后执行cmd,通过以下命令导入数据:
(1)E: ------进入E盘
(2)cd E:shp_data --------进入数据所在文件夹
(3)E:SHP_DATA>shp2sdo XJ XJTJ -i CODE -s 4326 -g GEOMETRY -d
----参数解释:
XJ:shp文件名(不带.shp后缀);
XJTJ:导入数据里面的表名;
-i CODE:唯一标示id字段(建议用“FID”就行,另外shp数据里面的字段不能有id字段,也不要尝试将shp数
据中已有的字段设为id字段,否则后面数据导入会报错。);
-s 4326:数据坐标信息,ESPG参数。比如WGS84坐标系对应的参数值是4326
-g geometry column指定sdo_geometry,默认是GEOM
-d 代表含义是将分解后的 ctl文件(控制文件)和data文件(数据存储文件)合并到一个文件,数据存储和控制都在ctl一个文件中,如果没有该选项,则会有单独的data文件生成,即ctl文件(控制文件)和data文件(数据存储文件);
这个语句执行成功后,会在shp_data文件下生成两个文件:
DJTJ.sql文件:是在数据库中创建DJTJ表的sql语句;
DJTJ.ctl文件:控制文件,导入数据
(4)E:SHP_DATA>sqlplus user/password@orcl ---------进入数据库
(5)SQL>@F:SHP_DATADJTJ.sql -------创建表并注册到USER_SDO_GEOM_METADATA
(6)SQL>quit --------退出数据库
(7)E:SHP_DATA>sqlldr user/password@orcl DJTJ --------导入数据
(8)E:SHP_DATA>sqlplus user/password@orcl --------进入数据库
(9)SQL>execute sdo_migrate.to_current('DJTJ','GEOMETRY');---------升级数据到当前oracle版本
(10)SQL>CREATE INDEX INDEX_OPER_DATA_SPATIAL ON OPER_DATA(GEOMETRY)INDEXTYPE IS MDSYS.SPATIAL_INDEX ; -----创建空间索引