文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。web
首先要安装有支持空间数据的Oracle,其次有安装版或免安装版的geoserver,二者都部署好后,咱们将开始讨论进一步须要配置的环境。sql
这里我使用由Oracle提供的shp2sdo来进行shp导入,同时使用由geoserver提供的能够链接Oracle数据源的插件来进行数据的发布。数据库
Shp2sdo的下载地址为:http://down.51cto.com/data/223757。tomcat
Geoserver的Oracle插件下载地址为:http://sourceforge.net/projects/geoserver/files/GeoServer。选择与你的geoserver版本对应的插件版本进行下载,好比个人是:geoserver-2.2-oracle-plugin.zip。微信
将shp2sdo.exe拷贝至Oracle环境变量所指的目录(bin)下。好比个人是在:oracle
将geoserver-2.2-oracle-plugin.zip解压后可得以下文件:app
a.若是是安装版,将gt-jdbc-oracle.jar放入:[GEOSERVER_HOME]/server/geoserver/WEB-INF/lib;若是是免安装版,将gt-jdbc-oracle.jar放入:In a war install this is [container]/webapps/geoserver/WEB-INF/libwebapp
b.若是是安装版,将ojdbc.jar放入:[GEOSERVER_HOME]/lib;我本人的是放入:F:\tomcat4Geoserver\lib。若是此文件放入的路径不对,oracle将没法链接上。工具
先给出输入的命令行:shp2sdo commhjt commhjttest –i id –s 4326 –g GEOMETRY –dui
-i id_colum指定id序列列,默认是id,即做为生成数据的惟一性标志;
-s 指定生成srid(即采用什么坐标),默认是null(虽默认为null,导入后值是0,所以要注意将插入的元数据表的该条记录的srid更新为null,不然0值在MDSYS.CS_SRS表中没有记录,在后面会出错); 这里个人shp是WGS84坐标,因此直接写成4326。
-g geometry column指定sdo_geometry,默认是GEOM;
-d 表明含义是将分解后的 ctl文件(控制文件)和data文件(数据存储文件)合并到一个文件,数据存储和控制都在ctl一个文件中。若是没有该选项,则会有单独的data文件生成,即ctl文件(控制文件)和data文件(数据存储文件);
以上命令行在shp文件夹中生成了以下文件:
打开commhjttest.sql能够看到其是一个建立shp表即相关空间元数据的sql:
打开commhjttest.ctl,能够发现数据的插入都在其中:
首先登录到数据库中 :sqlplus dlgis/dlgis@stdcg
而后输入:
SQL>@G:\shptest\commhjttest.sql --建立表并注册到USER_SDO_GEOM_METADATA
SQL>quit --退出数据库
sqlldr dlgis/dlgis@stdcg commhjttest --导入数据 (sqlldr即sql loader工具)
首先再次链接到数据库上,而后输入:
SQL> execute sdo_migrate.to_current('commhjttest');
SQL>CREATE INDEX INDEX_OPER_DATA_SPATIAL ON commhjttest(GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS('LAYER_GTYPE=POLYGON') NOPARALLEL;
若是出现以上现象,说明该索引名称可能以前就已经有使用,换一个名称便可,如索引名更换为:INDEX_OPER_DATA_SPATIAL_COMM
当咱们用shp2sdo生成shp的导入数据时,若是写的语句是:
即将空间参考默认为null时,最后生成索引时会报错,错误以下:
缘由是此时的元数据表USER_SDO_GEOM_METADATA中的SRID是0而不是null。当咱们将此SRID变为null后,再生成索引便可成功。
3.1 创建基于Oracle数据源的Store
进入geoserver的web页面,点击stores,选择ORACLE NG:
点击保存便可。
3.2 发布数据
选择要发布的数据,点击publish,作相关配置便可:
3.3浏览发布的图层服务
4.探讨
虽然用Oracle提供的shp2sdo工具能够将shp数据导入,可是目前就个人操做来讲,还相对复杂,培训工程人员有必定的难度。若是想普遍的推广的话,应该要写一个相关的导入工具才行。
谢谢博友其心塞渊的提醒,让我知道了还有shp2sdo这样的工具可使用,再次感谢。
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^