Oracle Spatial导入shp数据

时间:2023-01-23 07:42:31

现在开始尝试用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_DATA\DJTJ.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 ; -----创建空间索引