文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/前端
等值面是氣象、環保等相關項目上經常使用到的效果展現。在傳統的CS項目中,能夠利用一些二次開發工具進行開發,具備科研性質的項目上還會利用一些工具進行復雜建模出圖而後流程化。這裏,咱們撇去複雜的建模各因子,談談通用的等值面如何在WebGIS中進行展現。算法
首先,我介紹下幾種能夠在前端進行等值面渲染的方案:微信
a.利用arcgis的model進行建模,設置好輸入項,插值工具,輸出項等,而後發佈成GP服務,前端須要使用時經過rest方式調用GP服務將最後的插值結果進行展現。函數
b.直接在前端進行等值面算法的實現。在開源庫turfjs中提供了等值面的調用函數。工具
c.利用GDAL或者AE或者其餘氣象方面的開發包,開發專門的工具程序進行等值面生成,而後將結果以服務或者圖片的方式供前端調用。開發工具
d.直接在後臺寫程序進行生成,好比使用wcontour.jar等進行後臺開發服務。測試
項目首先想純前端進行開發,可是觀察了turfjs生成的等值面,效果不是很理想,出現不少沒有被覆蓋的空隙。例如:spa
GP服務的方案上,由於不想老是前端傳入全部插值的點,而是讓輸入數據源直接關聯上SDE中的表,SDE中該表的數據天天會變化,那麼每次生成時,前端只需調用鏈接而不用傳入任何數據便可生成新的等值面。目前還沒解決直接讓下圖所示的input關聯上SDE表的方法,有相關經驗的同行若是知道請不吝賜教。rest
因此最後選擇了熟悉的AE來生成等值面。server
AE生成的數據爲Grid格式:
自動發佈方案目前有如下三種:
a.編寫代碼讓arcgisserver自動發佈。此種方案涉及到代碼編寫,而且還將出現對舊服務刪除、新服務增長等操做,若是頻率過多,對arcgisserver是個負擔。
b.先用arcgisserver發佈一個mapserver服務,而後每次更新替換掉該服務對應的路徑文件夾中的文件。此種方法通過測試,每次替換了文件後,必須重啓一次該服務才行,一樣經過代碼控制對arcgisserver存在壓力。
c.直接編寫代碼對生成的等值面圖進行切圖,前端直接調用本地切圖文件。由於自動切圖工具已經有積累,因此採用此種方案。
a.將插值數據作成SHP經過SDE入庫,利用MXD將入庫數據進行添加,而且將掩膜數據也添入MXD。每次MIS上對接數據時動態修改SDE中該圖層的插值屬性的值便可。
b.經過MXD獲取到數據要素,利用AE中集成好的插值算法進行插值。插值時選擇好各插值參數,以及插值的掩膜圖層。
c.對差值出來的柵格等值面數據進行分類渲染。
d.根據切圖參數對最後柵格渲染圖進行自動切圖。
f.將切完的瓦片轉移保存至瓦片服務文件夾下。
e.前端加載等值面切圖瓦片。
等值面demo工具效果以下:
自動切圖後的結果以下:
系統中使用以下,支持多個等值面之間的切換,好比今、明、後三天的PM2.5等值面切換(因爲重慶的數據缺乏部分爲0,因此灰色部分不少)。
配置文件中,能夠配置等值面各插值參數、等值字段、分類閾值、渲染色帶、觸發時間、切圖參數、文件地址等:
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^