簡析將shp匯入Oracle並利用geoserver將匯入的資料發布

來源:互聯網
上載者:User

標籤:

1.環境準備1.1 軟體準備

首先要安裝有支援空間資料的Oracle,其次有安裝版或免安裝版的geoserver,兩者都部署好後,我們將開始討論進一步需要配置的環境。

這裡我使用由Oracle提供的shp2sdo來進行shp匯入,同時使用由geoserver提供的可以串連Oracle資料來源的外掛程式來進行資料的發布。

Shp2sdo的為:http://down.51cto.com/data/223757。

Geoserver的Oracle外掛程式為:http://sourceforge.net/projects/geoserver/files/GeoServer。選擇與你的geoserver版本對應的外掛程式版本進行下載,比如我的是:geoserver-2.2-oracle-plugin.zip。

1.2運行環境準備1.2.1 資料庫環境配置

將shp2sdo.exe拷貝至Oracle環境變數所指的目錄(bin)下。比如我的是在:

                       

1.2.2 geoserver環境配置

將geoserver-2.2-oracle-plugin.zip解壓後可得如下檔案:

 

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/lib

b.如果是安裝版,將ojdbc.jar放入:[GEOSERVER_HOME]/lib;我本人的是放入:F:\tomcat4Geoserver\lib。如果此檔案放入的路徑不對,oracle將無法串連上。

2.將shp匯入Oracle2.1 具體步驟2.1.1命令列指向要匯入的shp檔案

2.1.2利用shp2sdo將shp轉換為匯入檔案2.1.2.1 命令列

先給出輸入的命令列:shp2sdo commhjt commhjttest –i id –s 4326 –g GEOMETRY –d

2.1.2.2具體解析

-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,可以探索資料的插入都在其中:

 

2.1.3建立對應shp表並註冊到USER_SDO_GEOM_METADATA(利用commhjttest.sql)

首先登陸到資料庫中 :sqlplus dlgis/[email protected]

然後輸入:

SQL>@G:\shptest\commhjttest.sql  --建立表並註冊到USER_SDO_GEOM_METADATA

SQL>quit --退出資料庫

 

2.1.4通過sqlldr將資料匯入到建立的表中(利用commhjttest.ctl)

sqlldr dlgis/[email protected] commhjttest --匯入資料 (sqlldr即sql loader工具)

 

2.1.5將資料升級到與Oracle對應的版本上

首先再次串連到資料庫上,然後輸入:

SQL> execute sdo_migrate.to_current(‘commhjttest‘);

 

2.1.6為提高查詢速度,增加空間索引

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

 

2.1.7    查看匯入結果

 

2.2注意

當我們用shp2sdo產生shp的匯入資料時,如果寫的語句是:

 

即將空間參考預設為null時,最後產生索引時會報錯,錯誤如下:

 

原因是此時的中繼資料表USER_SDO_GEOM_METADATA中的SRID是0而不是null。當我們將此SRID變為null後,再產生索引即可成功。

 

3.通過geoserver發布Oracle中的資料

3.1 建立基於Oracle資料來源的Store

進入geoserver的web頁面,點擊stores,選擇ORACLE NG:

 

 點擊儲存即可。

3.2 發布資料

 

選擇要發布的資料,點擊publish,做相關配置即可:

 

 

3.3瀏覽發布的圖層服務

 

4.探討

雖然用Oracle提供的shp2sdo工具可以將shp資料匯入,但是目前就我的操作來說,還相對複雜,培訓工程人員有一定的難度。如果想廣泛的推廣的話,應該要寫一個相關的匯入工具才行。

謝謝博友其心塞淵的提醒,讓我知道了還有shp2sdo這樣的工具可以使用,再次感謝。

 

                                                                          ——歡迎轉載,但保留著作權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

簡析將shp匯入Oracle並利用geoserver將匯入的資料發布

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.