文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/。web
首先要安裝有支持空間數據的Oracle,其次有安裝版或免安裝版的geoserver,二者都部署好後,咱們將開始討論進一步須要配置的環境。sql
這裏我使用由Oracle提供的shp2sdo來進行shp導入,同時使用由geoserver提供的能夠鏈接Oracle數據源的插件來進行數據的發佈。數據庫
Shp2sdo的下載地址爲:http://down.51cto.com/data/223757。tomcat
Geoserver的Oracle插件下載地址爲:http://sourceforge.net/projects/geoserver/files/GeoServer。選擇與你的geoserver版本對應的插件版本進行下載,好比個人是:geoserver-2.2-oracle-plugin.zip。微信
將shp2sdo.exe拷貝至Oracle環境變量所指的目錄(bin)下。好比個人是在:oracle
將geoserver-2.2-oracle-plugin.zip解壓後可得以下文件:app
a.若是是安裝版,將gt-jdbc-oracle.jar放入:[GEOSERVER_HOME]/server/geoserver/WEB-INF/lib;若是是免安裝版,將gt-jdbc-oracle.jar放入:In a war install this is [container]/webapps/geoserver/WEB-INF/libwebapp
b.若是是安裝版,將ojdbc.jar放入:[GEOSERVER_HOME]/lib;我本人的是放入:F:\tomcat4Geoserver\lib。若是此文件放入的路徑不對,oracle將沒法鏈接上。工具
先給出輸入的命令行:shp2sdo commhjt commhjttest –i id –s 4326 –g GEOMETRY –dui
-i id_colum指定id序列列,默認是id,即做爲生成數據的惟一性標誌;
-s 指定生成srid(即採用什麼座標),默認是null(雖默認爲null,導入後值是0,所以要注意將插入的元數據表的該條記錄的srid更新爲null,不然0值在MDSYS.CS_SRS表中沒有記錄,在後面會出錯); 這裏個人shp是WGS84座標,因此直接寫成4326。
-g geometry column指定sdo_geometry,默認是GEOM;
-d 表明含義是將分解後的 ctl文件(控制文件)和data文件(數據存儲文件)合併到一個文件,數據存儲和控制都在ctl一個文件中。若是沒有該選項,則會有單獨的data文件生成,即ctl文件(控制文件)和data文件(數據存儲文件);
以上命令行在shp文件夾中生成了以下文件:
打開commhjttest.sql能夠看到其是一個建立shp表即相關空間元數據的sql:
打開commhjttest.ctl,能夠發現數據的插入都在其中:
首先登錄到數據庫中 :sqlplus dlgis/dlgis@stdcg
而後輸入:
SQL>@G:\shptest\commhjttest.sql --建立表並註冊到USER_SDO_GEOM_METADATA
SQL>quit --退出數據庫
sqlldr dlgis/dlgis@stdcg commhjttest --導入數據 (sqlldr即sql loader工具)
首先再次鏈接到數據庫上,而後輸入:
SQL> execute sdo_migrate.to_current('commhjttest');
SQL>CREATE INDEX INDEX_OPER_DATA_SPATIAL ON commhjttest(GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS('LAYER_GTYPE=POLYGON') NOPARALLEL;
若是出現以上現象,說明該索引名稱可能以前就已經有使用,換一個名稱便可,如索引名更換爲:INDEX_OPER_DATA_SPATIAL_COMM
當咱們用shp2sdo生成shp的導入數據時,若是寫的語句是:
即將空間參考默認爲null時,最後生成索引時會報錯,錯誤以下:
緣由是此時的元數據表USER_SDO_GEOM_METADATA中的SRID是0而不是null。當咱們將此SRID變爲null後,再生成索引便可成功。
3.1 創建基於Oracle數據源的Store
進入geoserver的web頁面,點擊stores,選擇ORACLE NG:
點擊保存便可。
3.2 發佈數據
選擇要發佈的數據,點擊publish,作相關配置便可:
3.3瀏覽發佈的圖層服務
4.探討
雖然用Oracle提供的shp2sdo工具能夠將shp數據導入,可是目前就個人操做來講,還相對複雜,培訓工程人員有必定的難度。若是想普遍的推廣的話,應該要寫一個相關的導入工具才行。
謝謝博友其心塞淵的提醒,讓我知道了還有shp2sdo這樣的工具可使用,再次感謝。
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^