使用oracle作为数据源发布图层到geoserver

    最近要做一个地图相关的项目,用oracle作为数据源,以前都是postgresql,没用过oracle呀。上网一查,geoserver好像支持oracle。网上也有一些怎么讲shp转换到oracle的教程。按着教程一步步来,最后还是出现了一些问题,研究了半天终于发布成功,于是想把这次发布过程记录下来,顺便也能帮助有需要的同学。(当然本地先装好oracle哦)

第一步:下载geoserver和oracle插件

到官网下载最新版


在首页点download进入此页面


选择格式

我选的是web archive,就是war包,war包直接放到tomcat的webapp里面,就可以直接发布了,非常方便。在这个页面往下拉找到Extensions,扩展。


下载oracle插件


选oracle,可以看到还有对别的数据库的扩展,非常强大。

第二步:安装插件

把下载好的war包在tomcat中发布一次(要是不会发布的话,建议先去学学Orz),发布一次是为了让tomcat解压geoserver,手动解压貌似也可以。把下载的geoserver-oracle-plugin.zip解压,将里面的gt-jdbc-oracle-X.X.jar包复制到geoserver目录下web-info/lib目录中,然后再把与你数据库匹配的ojdbc驱动包也复制到这个目录里,我用的oracle10g,在oracle目录product/10.x.x/db_1/jdbc/lib里可以找到ojdbc14.jar。如果不复制ojdbc驱动,在选择数据源的时候会没有oracle-database-ng这个选项。复制完成后启动geoserver,在数据存储页面,添加新的数据存储:


新建数据存储

看到图中的oracle ng就说明我们安装成功了。

第三步:为oracle安装空间组件,Oracle_Spatial


这一步,我找到一篇文章,按照其中介绍安装了Oracle_Spatial,很简单,没有遇到什么坑,我就不重复介绍了。文章链接

第四步:下载工具shp2sdo

这个工具我在csdn上下载的,下载链接。下载后里面有三个版本,分别是linux,nt,sparc_solaris。

我是windows系统所以用了nt文件夹里面的shp2sdo.exe

第五步:将shp文件转换为oracle脚本


终于进入正题了,在这一步我们要把需要发布的shp文件转换成.sql文件和.ctl

文件,我先把shp2sdp.exe和我要转换的图层都复制到了一个文件夹里,这样写命令的时候比较方便。


我要转换的图层

好了,现在打开一个cmd命令行工具,先进入到这个目录


进入目录

D:\oracle\oracle_gis\beisanshi就是我的目录啦。


输入命令 :

shp2sdo [shp文件名] [表名] -i  id -s [坐标系编码] -g MY_GEOMETRY -d

-i 是设置主键,-g 是给空间数据字段起个名字,不写默认是geom,-d 是把dat数据文件合并到ctl文件里。

-s 是数据库编码。

这里就要注意拉,我踩的第一个坑就是这个坐标系编码,一开始看网上的一些资料说直接填4326,我就无脑填了,结果最后发布后怎么看不到图层。所以这里要按照自己shp文件的坐标系编码填写。如果你不知道你的shp文件的坐标系编码怎么办呢?没关系,我当时也不知道自己的shp文件坐标系编码,于是乎,我先在geoserver中发布了这个shp文件,在发布页面geoserver会帮我们识别出图层的坐标系,如下图


geoserver识别坐标系编码

上面可以看到,本机srs是unknown说明geoserver的数据库中没有跟这个坐标系匹配的编码,但是后面我们可以看到坐标系的名字是 Xian_1980_3_Degree_GK_Zone_41,搜索一下这个坐标系,发现它的编码是2365,于是在上面的页面点击查找,搜索2365这个编码:


搜索2365编码

发现果然有这个坐标系,只是名字跟刚才那个有点区别,但都是xian 1980 3 degree,应该差不多,于是我的转换命令就写成了这样:

D:\oracle\oracle_gis\beisanshi\shp2sdo zh zhuang -s 2365 -d

执行成后是这样的:


这是我们的文件夹里生成了两个文件:zhuang.sql,zhuang.ctl,分别是建表脚本和数据脚本。好,到这里我们的第五步就完成了,胜利就在眼前!

第六步:执行脚本建表并导入数据

首先打开sqlplus,输入命令 @.../xxx.sql,就是@+我们生成的sql文件的全路径,我这里是

@D:\oracle\oracle_gis\beisanshi\zhuang.sql


执行sql文件

这时对应shp文件的表就建好了:


图层表

然后在命令行中输入SQLLDR 用户名/密码 CONTROL=...\XXX.ctl就可以把数据恢复到表中,

我输入的命令是:SQLLDR 用户名/密码 CONTROL=D:\oracle\oracle_gis\beisanshi\zhuang.ctl

如果数据很多会执行一会,完成后是这样的:


数据恢复成功

这是去数据库里看一下数据:


数据

可以看到已经都在数据库里了。但是现在的数据还需要转换到与当前数据库版本匹配,在sqlplus中执行命令:

EXECUTE SDO_MIGRATE.TO_CURRENT('表名');

我这里就是:EXECUTE SDO_MIGRATE.TO_CURRENT('zhuang');


等待一会,提示完成。

如果不执行这个步骤:发布后点击地图geoserver会报错:Rendering process failed/ by zero

接下来,我们需要为空间字段建立索引,由于转换的时候我没有填-g选项所以表的空间字段名是geom,

create index zhuang_index on zhuang(geom) indextype is mdsys.spatial_indes;

等待索引创建,我们数据库操作就结束啦,现在就剩下最后一步,发布!

第七步:发布图层

运行geoserver,新建数据源oracle ng:


配置数据源

划红线的是自己要填的东西,其他没有特殊要求保持默认就好了,填完拉到最下面点保存,之后会直接跳到发布图层的页面:


发布图层页面

会出现一大堆可以发布的图层,我们直接在右上角搜索我们自己的表名 zhuang。


然后点发布按钮,进入发布图层配置页面:


直接拉到下面设置坐标系这里,第一个是自动识别的2386,我们转换的时候设置的坐标系,第二个我们也选2365。

选好之后,点击从数据中计算,可以算出边框,在点击下面的compute from native bounds,计算出经纬度边框:


计算完之后,把页面拉到最上面点 发布 选项卡:


发布


拉到wms settings的位置,设置一下style:


style

我的图层块状的所以选择polygon,多边形。

好了,别的都不用管了,拉到最下面直接点保存。完成!

最后一步:查看!

点geoserver页面左侧的Layer Preview,点击我们刚发布的图层查看效果:



好了,到此为止大功告成,还有什么问题,欢迎大家交流~~

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容