shp文件导入Oracle并发布到Geoserver
将shp文件导入oracle中,并发布到geoserver上
1. 环境准备
1.1 环境介绍
Oracle 11g
Geoserver 2.11.1
1.2 软件准备
- 首先需要安装支持空间数据的oracle。
- 部署安装版或免安装版的geoserver。
- Geoserver oracle插件下载,需要对应geoserver的版本。
- 需要oracle的jdbc驱动,使用ojdbc7.jar。
- Shp2sdo插件,shp文件通过shp2sdo插件导入到oracle。
Shp2sdo的下载地址为:
http://download.csdn.net/detail/goodjie_12/8745325
Geoserver的下载地址为:
http://geoserver.org/release/stable/
Geoserver oracle插件下载地址为:
1.3 运行环境准备
1.3.1 数据库环境配置
将shp2sdo.exe文件拷贝到oracle环境变量目录下。例如我的目录为:
1.3.2 Geoserver环境配置
将下载到的Geoserver安装包进行安装,或者免安装的war包直接部署到Tomcat的webapps目录下,启动Tomcat服务器。笔者在这里使用的就是war包免安装。
将下载到的Geoserver Oracle插件解压,得到如下所示:
将gt-jdbc-oracle-17.1.jar与ojdbc7.jar一起拷贝到geoserver的目录(Tomcat解析war包之后生成的目录)[TOMCAT_HOME]/webapps/geoserver/WEB-INF/lib下。重新启动Tomcat服务器,如果位置放置不正确,会导致oracle无法连接上geoserver。
1.3.2 Oracle支持空间配置
Oracle的支持空间数据的特性是由其组件Spatial进行实现的。Oracle 11g数据库默认安装了Spatial组件,所以不需要进行配置,但若是删除了Spatial组件,可参考以下链接进行安装Spatial。
《oracle 11gSpatial组件的安装》
http://blog.chinaunix.net/uid-26313110-id-5747303.html
2. 将shp文件导入到Oracle
2.1 操作步骤
2.1.1 打开命令行,使其指向要导入的shp文件
2.1.2 利用shp2sdo命令将shp文件生成sql与ctl文件
参数解析
-i id_column指定id序列列,默认是id,作为生成数据的唯一标识。
-s sird_column指定采用什么样的坐标系,默认值是null,表示没有选择坐标系,这里使用4326。
-g geometry_column指定sdo_geometry,默认是geom。
-d 表示将分解后ctl文件与data文件合并到一个文件ctl里面。
2.1.3 创建shp文件对应的表
登陆到数据库: sqlplus user/password
输入以下命令,创建表,并注册到USER_SDO_GEOM_METADATA。
SQL>@ D:\data\corcoran_clay_depth\depth.sql
注:由于数据库中并没有depth这张表,所以出现第一行报错的情况,但是不影响表的创建,故不需修改sql文件。
2.1.4 通过sqlldr将数据导入到创建的表中
命令行执行以下命令。
Sqlldr user/password depth.ctl
2.1.5 将数据升级到与Oracle对应的版本。
连接到数据库,然后输入:
SQL> execute sdo_migrate.to_current(‘depth’);
2.1.6 为提高查询速度,添加空间索引
SQL> create index my_index on depth(geom) indextype is mdsys.spatial_index;
如此,便可发布数据了。
3. Geoserver发布数据
3.1 新建工作区
新建一个工作区,并启用,开启wms服务。
3.2 建立基于Oracle的数据存储
在geoserver的web页面,点击数据存储,添加新的数据源,选择Oracle NG
在以下4个必选输入框输入信息,保存。
保存之后,会出现很多可以发布的数据,选择你要发布的数据进行发布。
3.3 发布数据
在搜索框种输入你要发布的数据,搜索完成后点击发布。
点击发布,进入发布页面,在数据标签下进行计算数据,srs是shp文件导入oracle时的坐标参考系,然后分别点击 从数据种计算 与Compute from native bounds。
完成这一步之后,切换到发布标签。选择你的图层的属性。
点击保存,完成发布。
3.4 查看发布的数据
点击Layer Preview,查看发布的图层。
注:这里的输出格式随便选,wms提供多种格式的输出。
至此,数据发布成功。
总结:项目中要求将常规的地理空间数据存储到oracle中,并发布到geoserver中。 在这个阶段我还是踩了几个坑。
第一个需要注意的就是坐标参考系,这个选择一定要正确,不然你的数据发布出去,你也看不到。
第二个就是Oracle 11g是自带spatial组件的,而现在最新的版本Oralce 12c是不带spatial组件的,这一点需要注意以下。
参考引用
http://www.jianshu.com/p/08afbdc63848
http://www.cnblogs.com/naaoveGIS/p/4199006.html