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 中查看了:

最后:

posted on 2012-11-28 18:24  weldonh  阅读(4230)  评论(2编辑  收藏  举报

导航