基於geoserver的REST服務完成mysql資料來源動態釋出
1. 背景
目前有兩種方案來實現,一種是利用已封裝好的geoserverManager.jar來開發,另一種就是直接基於geoserver的Rest服務來開發。這裡,我們主要對如何使用geoserver的Rest服務完成開發來進行描述。
2. RestAPI
我所列出的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.元資料獲取,服務託管。
如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^