这两天由于项目原因,需要将shp数据存入Oracle,并有geoserver发布,频繁出现问题,感谢网络,最终让我解决了我所碰到的这些问题。
第一部分:shp数据存入Oracle
1、下载shp2sdo.exe 工具(网上有很多,需要的也可以百度Hi我),本来就是Oracle的一个工具,直接放到自己的Oracle安装目录X:\oracle\product\10.2.0\db_1\BIN下面就好了
2、将要转的shp文件放到某个目录下(F:\SHP_DATA),名称无所谓了
3、打开CMD,执行以下命令
C:\Documents and Settings\Administrator>cd f:\shp_data
C:\Documents and Settings\Administrator>f:
F:\SHP_DATA> //转入放置shp数据的目录
下面的命令很关键
F:\SHP_DATA>shp2sdo WHXY_WHXY_MRWTR_C WHXY_WHXY_MRWTR_C-i id -s 4326 -g GWM_GEOMETRY -d
各个参数说明:
shp2sdo-----下载的工具
WHXY_WHXY_MRWTR_C------第一个为需要转换的shp文件名称,第二个是存入数据库以后对应的表名,根据实际情况自行变化
-i------定义主键,主键为id
-s------指定生成srid(即采用什么坐标),一般使用4326,即geoserver发布时使用的坐标系EPSG:4326
-g------指定sdo_geometry,默认是GEOM,此选项一般使用默认即可,这个值跟后面建立索引关系很大,我这里用的是GWM_GEOMETRY
-d------是将生成的dat文件和ctl文件合并为一个ctl文件的设置
4、执行完上述命令后,是不是发现F:\SHP_DATA文件夹下,多了两个文件?一个WHXY_WHXY_MRWTR_C.sql,一个WHXY_WHXY_MRWTR_C.ctl
5、开始入库操作
F:\SHP_DATA>sqlplusszfxya/admin@orcl //登录Oracle数据库操作,根据实际变化
SQL>@WHXY_WHXY_MRWTR_C.sql //根据生成的sql创建表
SQL>quit //退出登录
F:\SHP_DATA>sqlldr szfxya/admin@orcl WHXY_WHXY_MRWTR_C //导入数据
别急,这离成功还有很长一段距离
6、Oracle数据处理(建立索引)
用CMD重复登录数据库操作,建立索引,切记语句结束后要带分号
CREATE INDEX WHXY_WHXY_MRWTR_C_idx ON WHXY_WHXY_MRWTR_C(GWM_GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
WHXY_WHXY_MRWTR_C_idx-------为索引名称,自己命名
WHXY_WHXY_MRWTR_C-----导入数据的表名
GWM_GEOMETRY------该参数必须和生成sql时的-g参数保持一致,如果-g为默认参数geom,那么这里也应当响应的变为geom
7、Oracle数据处理(对Oracle地理空间数据进行升级)------------------必须,要不然有可能会报错,我就遇到了,查找了半天,总算解决
用CMD重复登录数据库操作
EXECUTE SDO_MIGRATE.TO_CURRENT('WHXY_WHXY_MRWTR_C','GWM_GEOMETRY')
WHXY_WHXY_MRWTR_C------为导入数据的表名
GWM_GEOMETRY------为创建WHXY_WHXY_MRWTR_C.sql时-d的参数
没有这一步,geoserver发布图层后,Tomcat后台可能会报ERROR: [geoserver.ows] Rendering process failed
Caused by:java.lang.ArithmeticException: /by zero,而图层也不难正常显示,会报Rendering process failed /by zero错误
本篇所述操作,参照以下文章
http://www.haogongju.net/art/605230http://www.cnblogs.com/freetofly/articles/1025594.html
http://hi.baidu.com/zhyiwww/blog/item/6be2c25cfb324d44fbf2c0be.html
第二部分:geoserver发布oracle地图数据
经过第一部分的shp文件的处理,存入了oracle数据库,接下来就是geoserver的发布了
1、下载自己geoserver版本对于的oracle的Jar包,我的geoserver版本为2.1.2,其他版本直接把下面地址的版本号一改好了
2、将该压缩包解压,将gt-jdbc-oracle-2.7.3放入geoserver/web-info/lib中
将ojdbc14放入tomcat的根目录下的lib文件夹中
从oracle的安装目录下搜索classes12的Jar包,并将其复制到geoserver/web-info/lib中(这步很重要,要不然后面添加Oracle数据源的时候,会添加不上)
3、打开geoserver的地址,添加Stores,选择Oracle NG就可以
然后填写相应的属性值
好了,添加完数据源以后,将相应的表添加至图层,一切完毕~~