文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
1. 背景
在之前的《簡析GeoServer服務的內部文件組織以及GeoServer自動化服務發布工具的開發思路》(https://www.cnblogs.com/naaoveGIS/p/4212093.html)文章中,我詳細的介紹了Geoserver如何通過構造其內部的featuretype.xml、layer.xml等文件以實現數據源的快捷發布。但是該方案主要針對項目環境預搭建時的快速處理,但是當Geoserver已經開始運行,系統不能時刻重啟情況下,該方案是不能解決數據的實時動態發布的。因此,我們還需要其他方案來解決。
目前有兩種方案來實現,一種是利用已封裝好的geoserverManager.jar來開發,另一種就是直接基於geoserver的Rest服務來開發。這里,我們主要對如何使用geoserver的Rest服務完成開發來進行描述。
2. RestAPI
Geoserver的每一個版本均有在線使用說明,這里給出其中一個版本中關於RestAPI介紹的地址:http://docs.geoserver.org/stable/en/user/rest/index.html
我所列出的workspaces、datastores、featuretypes、layers、styles是服務發布中均會涉獵的類型。我們利用workspaces來創建工作空間,利用datasotores來創建數據源,利用featuretypes來將數據源中具體數據創建為要素類型,利用styles來創建樣式,利用layer來將數據類型與樣式進行關聯。
以datastores為例,點擊該鏈接可進入其支持的所有API請求:
其中包含了數據源的增、刪、改、查等。其他模塊類似。
3. 實現
3.1 DataStores
該操作包含判斷DataStores是否存在,以及創建。
3.1.1判斷是否存在
依賴 gisBaseLayer.getServiceUrl()+"/rest/workspaces/cite/datastores.json"請求可獲取到所有dataStores描述,進而判斷指定的DataStores是否存在。
3.1.2創建
再依據構造創建dataStores的XML,發送Rest請求完成創建,這里以mysql數據源為例:
其中,發送請求時,一定要設置其權限認證:
請求方式為POST。
3.2 FeatureTypes
當dataStores創建成功后,需將其中的數據發布為要素類型服務。這里主要包含存在判斷、刪除操作、創建操作。
3.2.1判斷是否存在
通過發送:gisBaseLayer.getServiceUrl()+"/rest/workspaces/cite/datastores/"+storeName+"/featuretypes.json",可以獲取到指定的stores下的所有featuretype, 通過遍歷可判斷指定的featuretype是否存在。
3.2.2刪除
以DELETE請求類型,發送:
gisBaseLayer.getServiceUrl()+"/rest/workspaces/urbanlayer/datastores/"+storeName+"/featuretypes/"+featureTypeName+"?recurse=true"
請求,便可刪除指定的featuretype。
3.2.3 創建
獲取到要素的幾何范圍、坐標系等,便可以構造XML:
請求方式為POST。
3.3Styles
3.3.1判斷是否存在
通過發送:gisBaseLayer.getServiceUrl()+"/rest/styles.json",可以獲得所有style,通過遍歷可判斷指定的style是否存在。
3.3.2刪除
以DELETE請求方式,發送:
gisBaseLayer.getServiceUrl()+"/rest/styles/"+styleName+"?purge=ture&recurse=true"
便可刪除指定的style。
3.3.3創建
Geoserver中的樣式內容均為SLD格式,這里創建樣式服務有多種方式,這里以style.sld和style.xml一同創建為例:
紅框中分別為樣式名稱,以及創建Style時傳入的數據格式。
請求方式為POST請求。
3.4Layers
3.4.1修改
該功能主要目的是修改layer與style的關聯:
請求方式為PUT。
4. 功能設計
a.開發數據源選擇框,提供業務庫中待發布數據選擇、幾何字段選擇、數據條件過濾等。
b.開發樣式配置模板,提供填充色、邊框、圖標等配置。
c.開發地理服務器選擇框,提供選擇發布至某個geoserver。
d.一鍵發布。
e.元數據獲取,服務托管。
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^