GeoServer连接oracle数据库
添加shp文件请参考:http://ishare.iask.sina.com.cn/f/23580732.html
简单记录一下:把shp文件存进oracle数据库,然后从数据库读取数据
shp文件存进oracle数据库:
首先我们要把shp文件转换分割成oracle可以导入的数据库文件,这个转换可以使用oracle提供的一个现成的工具shp2sdo(很小),
可以到网上去找,下载后把此文件复制到PATH变量包含的目录下,如我的oracle客户端安装后自动注册的环境变量是 path C:\Oracle\product\10.1.0\Client_1\bin;,
我们可以把此文件拷贝到该目录下,
然后在dos下运行该工具,
定位到我们的shp文件的位置,
例如我们的shp文件名称是state.shp(shapefile包括至少三个文件state.shp state.dbf state.idx,请把这三个文件放在同一个文件加下,否则转换会出问题)
在D:\map\目录下,我们在dos命令窗口下就应该这样操作
shp2sdo state tabletest -i gid -s 8307 -g -d
其中state即为本地的shp文件名(不加shp后缀),
tabletest为生成的文件名(同时也是将来导进数据库的表名),
-d代表含义是将分解后的ctl文件(控制文件)和data文件(数据存储文件)分别生成,
如果没有该选项,则不会有单独的data文件生成,数据存储和控制都在ctl一个文件中,
经常用到的还有选项 -i id_colum指定id序列列,默认是id,即作为生成数据的唯一性标志,
此列是不可能重复的,一般作为索引列,-s **指定生成srid,默认是null,目前一般是8307吧,
-g geometry column指定sdo_geometry,
默认是GEOM,此选项一般使用默认即可,命令执行后,
会生成三个文件,
tabletest .sql、tabletest .ctl、tabletest .data(我的只生成了两个,没有tabletest .data,不知道为什么,因为后面没用到该文件,也就没去管它)。
分解完成后就是导入,这里仍然使用命令行的方式
D:\data\>sqlplus system/root@XE
SQL>@tabletest.sql
SQL>quit
导入ctl文件
D:\data\>sqlldr system/root@XE tabletest
建立空间索引
D:\data\>sqlplus system/root@XE
SQL>CREATE Index STATEAREA_idx ON TABLETEST(GEOM) INDEXTYPE is MDSYS.SPATIAL_INDEX;
至此空间数据导入完毕。
另外还需要建立一个视图,具体作用说不大清楚,但在启动程序发布地图的时候会用到,如果没有此视图文件会出现图层无法map的错误,建立过程如下:
select
GID ,
FNODE_ ,
TNODE_ ,
LPOLY_ ,
RPOLY_ ,
LENGTH ,
RAI_4M_,
RAI_4M_ID ,
GBCODE ,
NAME,
PINYIN
from system.tabletest
我直接在database express edition 中建立的;
至此,shp文件就导入oracle数据库中了;
下面是在GeoServer中配置该数据作为源数据:
geoserver web 版 tomcat6.0
geoserver 版本为:2.2.2
把geoserver.war运行起来后,默认在data下的stores下是没有oracle选项的,
(我这是后来加的)
下载安装oracle spatial插件 download oracle plugin for geoserver from
http://sourceforge.net/project/downloading.php?groupname=geoserver&filename=geoserver-2.2.2-oracle-plugin.zip&use_mirror=nchc config
Copy gt2-oracle jar to [GEOSERVER_HOME]/server/geoserver/WEB-INF/lib/
copy ojdbc14.jar to [GEOSERVER_HOME]/lib
restart GeoServer
然后就会看到
现在就可以添加了:
选择Oracle NG -Oracle Database 选项
进入:
下面是我的具体配置(在这一步时,不要填写具体表名,这一步只是连接上oracle的数据库,具体数据表在下一步选择):
如果配置正确就会进入:
查找刚才创建的表:
选择Publish:
之后可以去publishing栏目(之前是在data中)
选择style(可以是默认值)
之后保存,就会自动跳转到:
可以回到layer previer 中查看了:
最后: