使用oracle作為數(shù)據(jù)源發(fā)布圖層到geoserver

? ? 最近要做一個(gè)地圖相關(guān)的項(xiàng)目睬隶,用oracle作為數(shù)據(jù)源,以前都是postgresql页徐,沒用過oracle呀苏潜。上網(wǎng)一查,geoserver好像支持oracle变勇。網(wǎng)上也有一些怎么講shp轉(zhuǎn)換到oracle的教程窖贤。按著教程一步步來,最后還是出現(xiàn)了一些問題贰锁,研究了半天終于發(fā)布成功赃梧,于是想把這次發(fā)布過程記錄下來,順便也能幫助有需要的同學(xué)豌熄。(當(dāng)然本地先裝好oracle哦)

第一步:下載geoserver和oracle插件

到官網(wǎng)下載最新版


在首頁點(diǎn)download進(jìn)入此頁面


選擇格式

我選的是web archive授嘀,就是war包,war包直接放到tomcat的webapp里面锣险,就可以直接發(fā)布了蹄皱,非常方便。在這個(gè)頁面往下拉找到Extensions芯肤,擴(kuò)展巷折。


下載oracle插件


選oracle,可以看到還有對別的數(shù)據(jù)庫的擴(kuò)展崖咨,非常強(qiáng)大锻拘。

第二步:安裝插件

把下載好的war包在tomcat中發(fā)布一次(要是不會(huì)發(fā)布的話,建議先去學(xué)學(xué)Orz)击蹲,發(fā)布一次是為了讓tomcat解壓geoserver署拟,手動(dòng)解壓貌似也可以。把下載的geoserver-oracle-plugin.zip解壓歌豺,將里面的gt-jdbc-oracle-X.X.jar包復(fù)制到geoserver目錄下web-info/lib目錄中推穷,然后再把與你數(shù)據(jù)庫匹配的ojdbc驅(qū)動(dòng)包也復(fù)制到這個(gè)目錄里,我用的oracle10g类咧,在oracle目錄product/10.x.x/db_1/jdbc/lib里可以找到ojdbc14.jar馒铃。如果不復(fù)制ojdbc驅(qū)動(dòng),在選擇數(shù)據(jù)源的時(shí)候會(huì)沒有oracle-database-ng這個(gè)選項(xiàng)痕惋。復(fù)制完成后啟動(dòng)geoserver区宇,在數(shù)據(jù)存儲(chǔ)頁面,添加新的數(shù)據(jù)存儲(chǔ):


新建數(shù)據(jù)存儲(chǔ)

看到圖中的oracle ng就說明我們安裝成功了血巍。

第三步:為oracle安裝空間組件萧锉,Oracle_Spatial


這一步珊随,我找到一篇文章述寡,按照其中介紹安裝了Oracle_Spatial柿隙,很簡單,沒有遇到什么坑鲫凶,我就不重復(fù)介紹了禀崖。文章鏈接

第四步:下載工具shp2sdo

這個(gè)工具我在csdn上下載的螟炫,下載鏈接波附。下載后里面有三個(gè)版本,分別是linux昼钻,nt掸屡,sparc_solaris。

我是windows系統(tǒng)所以用了nt文件夾里面的shp2sdo.exe

第五步:將shp文件轉(zhuǎn)換為oracle腳本


終于進(jìn)入正題了然评,在這一步我們要把需要發(fā)布的shp文件轉(zhuǎn)換成.sql文件和.ctl

文件仅财,我先把shp2sdp.exe和我要轉(zhuǎn)換的圖層都復(fù)制到了一個(gè)文件夾里,這樣寫命令的時(shí)候比較方便碗淌。


我要轉(zhuǎn)換的圖層

好了盏求,現(xiàn)在打開一個(gè)cmd命令行工具,先進(jìn)入到這個(gè)目錄


進(jìn)入目錄

D:\oracle\oracle_gis\beisanshi就是我的目錄啦亿眠。


輸入命令 :

shp2sdo [shp文件名] [表名] -i? id -s [坐標(biāo)系編碼] -g MY_GEOMETRY -d

-i 是設(shè)置主鍵碎罚,-g 是給空間數(shù)據(jù)字段起個(gè)名字,不寫默認(rèn)是geom纳像,-d 是把dat數(shù)據(jù)文件合并到ctl文件里荆烈。

-s 是數(shù)據(jù)庫編碼。

這里就要注意拉竟趾,我踩的第一個(gè)坑就是這個(gè)坐標(biāo)系編碼耙考,一開始看網(wǎng)上的一些資料說直接填4326,我就無腦填了潭兽,結(jié)果最后發(fā)布后怎么看不到圖層倦始。所以這里要按照自己shp文件的坐標(biāo)系編碼填寫。如果你不知道你的shp文件的坐標(biāo)系編碼怎么辦呢山卦?沒關(guān)系鞋邑,我當(dāng)時(shí)也不知道自己的shp文件坐標(biāo)系編碼,于是乎账蓉,我先在geoserver中發(fā)布了這個(gè)shp文件枚碗,在發(fā)布頁面geoserver會(huì)幫我們識(shí)別出圖層的坐標(biāo)系,如下圖


geoserver識(shí)別坐標(biāo)系編碼

上面可以看到铸本,本機(jī)srs是unknown說明geoserver的數(shù)據(jù)庫中沒有跟這個(gè)坐標(biāo)系匹配的編碼肮雨,但是后面我們可以看到坐標(biāo)系的名字是 Xian_1980_3_Degree_GK_Zone_41,搜索一下這個(gè)坐標(biāo)系,發(fā)現(xiàn)它的編碼是2365箱玷,于是在上面的頁面點(diǎn)擊查找怨规,搜索2365這個(gè)編碼:


搜索2365編碼

發(fā)現(xiàn)果然有這個(gè)坐標(biāo)系陌宿,只是名字跟剛才那個(gè)有點(diǎn)區(qū)別,但都是xian 1980 3 degree波丰,應(yīng)該差不多壳坪,于是我的轉(zhuǎn)換命令就寫成了這樣:

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

執(zhí)行成后是這樣的:


這是我們的文件夾里生成了兩個(gè)文件:zhuang.sql,zhuang.ctl,分別是建表腳本和數(shù)據(jù)腳本掰烟。好爽蝴,到這里我們的第五步就完成了,勝利就在眼前纫骑!

第六步:執(zhí)行腳本建表并導(dǎo)入數(shù)據(jù)

首先打開sqlplus蝎亚,輸入命令 @.../xxx.sql,就是@+我們生成的sql文件的全路徑先馆,我這里是

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


執(zhí)行sql文件

這時(shí)對應(yīng)shp文件的表就建好了:


圖層表

然后在命令行中輸入SQLLDR 用戶名/密碼 CONTROL=...\XXX.ctl就可以把數(shù)據(jù)恢復(fù)到表中颖对,

我輸入的命令是:SQLLDR 用戶名/密碼 CONTROL=D:\oracle\oracle_gis\beisanshi\zhuang.ctl

如果數(shù)據(jù)很多會(huì)執(zhí)行一會(huì),完成后是這樣的:


數(shù)據(jù)恢復(fù)成功

這是去數(shù)據(jù)庫里看一下數(shù)據(jù):


數(shù)據(jù)

可以看到已經(jīng)都在數(shù)據(jù)庫里了磨隘。但是現(xiàn)在的數(shù)據(jù)還需要轉(zhuǎn)換到與當(dāng)前數(shù)據(jù)庫版本匹配缤底,在sqlplus中執(zhí)行命令:

EXECUTE SDO_MIGRATE.TO_CURRENT('表名');

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


等待一會(huì),提示完成番捂。

如果不執(zhí)行這個(gè)步驟:發(fā)布后點(diǎn)擊地圖geoserver會(huì)報(bào)錯(cuò):Rendering process failed/ by zero

接下來个唧,我們需要為空間字段建立索引,由于轉(zhuǎn)換的時(shí)候我沒有填-g選項(xiàng)所以表的空間字段名是geom设预,

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

等待索引創(chuàng)建徙歼,我們數(shù)據(jù)庫操作就結(jié)束啦,現(xiàn)在就剩下最后一步鳖枕,發(fā)布魄梯!

第七步:發(fā)布圖層

運(yùn)行g(shù)eoserver,新建數(shù)據(jù)源oracle ng:


配置數(shù)據(jù)源

劃紅線的是自己要填的東西宾符,其他沒有特殊要求保持默認(rèn)就好了酿秸,填完拉到最下面點(diǎn)保存,之后會(huì)直接跳到發(fā)布圖層的頁面:


發(fā)布圖層頁面

會(huì)出現(xiàn)一大堆可以發(fā)布的圖層魏烫,我們直接在右上角搜索我們自己的表名 zhuang辣苏。


然后點(diǎn)發(fā)布按鈕,進(jìn)入發(fā)布圖層配置頁面:


直接拉到下面設(shè)置坐標(biāo)系這里哄褒,第一個(gè)是自動(dòng)識(shí)別的2386稀蟋,我們轉(zhuǎn)換的時(shí)候設(shè)置的坐標(biāo)系,第二個(gè)我們也選2365呐赡。

選好之后退客,點(diǎn)擊從數(shù)據(jù)中計(jì)算,可以算出邊框,在點(diǎn)擊下面的compute from native bounds萌狂,計(jì)算出經(jīng)緯度邊框:


計(jì)算完之后档玻,把頁面拉到最上面點(diǎn) 發(fā)布 選項(xiàng)卡:


發(fā)布


拉到wms settings的位置,設(shè)置一下style:


style

我的圖層塊狀的所以選擇polygon粥脚,多邊形窃肠。

好了包个,別的都不用管了刷允,拉到最下面直接點(diǎn)保存。完成碧囊!

最后一步:查看树灶!

點(diǎn)geoserver頁面左側(cè)的Layer Preview,點(diǎn)擊我們剛發(fā)布的圖層查看效果:



好了糯而,到此為止大功告成天通,還有什么問題,歡迎大家交流~~

版權(quán)所有熄驼,文章允許轉(zhuǎn)載像寒,但必須以鏈接方式注明源地址,否則追究法律責(zé)任!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓜贾,一起剝皮案震驚了整個(gè)濱河市诺祸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祭芦,老刑警劉巖筷笨,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異龟劲,居然都是意外死亡胃夏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門昌跌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仰禀,“玉大人,你說我怎么就攤上這事蚕愤〉狂” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵审胸,是天一觀的道長亥宿。 經(jīng)常有香客問我,道長砂沛,這世上最難降的妖魔是什么烫扼? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮碍庵,結(jié)果婚禮上映企,老公的妹妹穿的比我還像新娘悟狱。我一直安慰自己,他們只是感情好堰氓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布挤渐。 她就那樣靜靜地躺著,像睡著了一般双絮。 火紅的嫁衣襯著肌膚如雪浴麻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天囤攀,我揣著相機(jī)與錄音软免,去河邊找鬼。 笑死焚挠,一個(gè)胖子當(dāng)著我的面吹牛膏萧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝌衔,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼榛泛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了噩斟?” 一聲冷哼從身側(cè)響起曹锨,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亩冬,沒想到半個(gè)月后艘希,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硅急,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年覆享,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片营袜。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撒顿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荚板,到底是詐尸還是另有隱情凤壁,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布跪另,位于F島的核電站拧抖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏免绿。R本人自食惡果不足惜唧席,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧淌哟,春花似錦迹卢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掉弛,卻和暖如春症见,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狰晚。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工筒饰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缴啡,地道東北人壁晒。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像业栅,于是被迫代替她去往敵國和親秒咐。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容