shp文件导入Oracle并发布到Geoserver

将shp文件导入oracle中,并发布到geoserver上

1. 环境准备

1.1 环境介绍

Oracle 11g

Geoserver 2.11.1

1.2 软件准备

  1. 首先需要安装支持空间数据的oracle。
  2. 部署安装版或免安装版的geoserver。
  3. Geoserver oracle插件下载,需要对应geoserver的版本。
  4. 需要oracle的jdbc驱动,使用ojdbc7.jar。
  5. Shp2sdo插件,shp文件通过shp2sdo插件导入到oracle。

Shp2sdo的下载地址为:

http://download.csdn.net/detail/goodjie_12/8745325

Geoserver的下载地址为:

http://geoserver.org/release/stable/

Geoserver oracle插件下载地址为:

https://sourceforge.net/projects/geoserver/files/GeoServer/2.11.1/extensions/geoserver-2.11.1-oracle-plugin.zip/download

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

 

posted @ 2017-06-20 14:42  蚂小蚁  阅读(450)  评论(0编辑  收藏  举报