从shp数据存入Oracle到geoserver发布地图数据

来源:互联网 发布:微处理器和单片机 编辑:程序博客网 时间:2024/05/20 05:30

这两天由于项目原因,需要将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/605230

http://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,其他版本直接把下面地址的版本号一改好了

http://ncu.dl.sourceforge.net/project/geoserver/GeoServer%20Extensions/2.1.2/geoserver-2.1.2-oracle-plugin.zip

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就可以

然后填写相应的属性值
好了,添加完数据源以后,将相应的表添加至图层,一切完毕~~


原创粉丝点击