1. 程式人生 > >WebGIS中等值面展示的相關方案簡析

WebGIS中等值面展示的相關方案簡析

1.背景

等值面是氣象、環保等相關專案上常用到的效果展示。在傳統的CS專案中,可以利用一些二次開發工具進行開發,具有科研性質的專案上還會利用一些工具進行復雜建模出圖然後流程化。這裡,我們撇去複雜的建模各因子,談談通用的等值面如何在WebGIS中進行展示。

首先,我介紹下幾種可以在前端進行等值面渲染的方案:

a.利用arcgis的model進行建模,設定好輸入項,插值工具,輸出項等,然後釋出成GP服務,前端需要使用時通過rest方式呼叫GP服務將最後的插值結果進行展示。

b.直接在前端進行等值面演算法的實現。在開源庫turfjs中提供了等值面的呼叫函式。

c.利用GDAL或者AE或者其他氣象方面的開發包,開發專門的工具程式進行等值面生成,然後將結果以服務或者圖片的方式供前端呼叫。

d.直接在後臺寫程式進行生成,比如使用wcontour.jar等進行後臺開發服務。

2.等值面生成方案選擇

專案首先想純前端進行開發,但是觀察了turfjs生成的等值面,效果不是很理想,出現很多沒有被覆蓋的空隙。例如:

 

GP服務的方案上,因為不想總是前端傳入所有插值的點,而是讓輸入資料來源直接關聯上SDE中的表,SDE中該表的資料每天會變化,那麼每次生成時,前端只需呼叫連線而不用傳入任何資料即可生成新的等值面。目前還沒解決直接讓下圖所示的input關聯上SDE表的方法,有相關經驗的同行如果知道請不吝賜教。

 

所以最後選擇了熟悉的AE來生成等值面。

3.服務自動釋出方案選擇

AE生成的資料為Grid格式:

 

自動釋出方案目前有以下三種:

a.編寫程式碼讓arcgisserver自動釋出。此種方案涉及到程式碼編寫,並且還將出現對舊服務刪除、新服務增加等操作,如果頻率過多,對arcgisserver是個負擔。

b.先用arcgisserver釋出一個mapserver服務,然後每次更新替換掉該服務對應的路徑資料夾中的檔案。此種方法經過測試,每次替換了檔案後,必須重啟一次該服務才行,同樣通過程式碼控制對arcgisserver存在壓力。

c.直接編寫程式碼對生成的等值面圖進行切圖,前端直接呼叫本地切圖檔案。因為自動切圖工具已經有積累,所以採用此種方案。

4.專案最終採用的方案總結

a.將插值資料做成SHP通過SDE入庫,利用MXD將入庫資料進行新增,並且將掩膜資料也添入MXD。每次MIS上對接資料時動態修改SDE中該圖層的插值屬性的值即可。

b.通過MXD獲取到資料要素,利用AE中整合好的插值演算法進行插值。插值時選擇好各插值引數,以及插值的掩膜圖層。

c.對差值出來的柵格等值面數據進行分類渲染。

d.根據切圖引數對最後柵格渲染圖進行自動切圖。

f.將切完的瓦片轉移儲存至瓦片服務資料夾下。

e.前端載入等值面切圖瓦片。

5.效果展示

等值面demo工具效果如下:

 

自動切圖後的結果如下:

 

系統中使用如下,支援多個等值面之間的切換,比如今、明、後三天的PM2.5等值面切換(由於重慶的資料缺少部分為0,所以灰色部分很多)。

配置檔案中,可以配置等值面各插值引數、等值欄位、分類閾值、渲染色帶、觸發時間、切圖引數、檔案地址等:

                                                                           如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^