有源淹没分析arcgis_基于DEM的有源洪水淹没分析算法
成靜
摘 要:近年以來,基于數字高程模型(Digital Elevation Model,DEM),將水動力模型與地理信息系統技術相結合,來計算、顯示洪水淹沒范圍是水利應用領域的研究熱點之一。洪水淹沒模擬分為有源淹沒和無源淹沒兩種情形,針對有源淹沒遞歸算法計算效率低和穩定性不高的缺點,本文基于“棧”數據結構的特點,提出了一種基于淹沒區緩沖堆棧的有源洪水淹沒分析種子蔓延算法,實現了更為高效的有源洪水淹沒分析,最后在江西省遂川縣洪水淹沒分析系統中進行了實踐與驗證。
關鍵詞:DEM;洪水淹沒分析;GIS;算法
我國是一個洪水災害頻繁發生的國家,近年來,隨著中國社會經濟的發展,洪水災害造成的損失也日益嚴重,而準確的洪水預報與分析可以為防洪救災方案的制定和指揮調度提供重要的科學依據。因此,在地理信息系統等新技術的支持下,研究、計算與模擬洪水淹沒范圍,已成為當前極有意義的研究課題。
近年以來,基于數字高程模型(Digital Elevation Model,DEM),將水動力模型與地理信息系統技術相結合,來計算、顯示洪水淹沒范圍是水利應用領域的研究熱點之一。如劉仁義等人提出了“有源淹沒”和“無源淹沒”兩種淹沒區計算方法[1];許多學者采用遞歸的方法來計算洪水有源淹沒范圍[2],但是遞歸方法卻具有計算效率低和穩定性不高的缺點;對此,本文基于“棧”數據結構的特點,提出了一種基于淹沒區緩沖堆棧的有源洪水淹沒分析種子蔓延算法,實現了更為高效的有源洪水淹沒分析,最后在江西省遂川縣洪水淹沒分析與顯示系統中進行了實踐與驗證。
1 基于DEM的洪水淹沒分析算法
(1)數字高程模型(DEM)
數字高程模型(Digital Elevation Model,DEM)描述了地表形態的時空分布,是地學分析和過程模擬的基礎數據,已廣泛應用于全球變化、環境保護、自然災害等科學領域。隨著對地觀測技術的發展,各種全球尺度DEM 數據(如SRTM DEM、ASTER DEM 等)已向公眾開放,為全球范圍和區域規模的地學分析模擬提供了可靠的數據來源。DEM是由一系列的地面坐標點(x,y)以及對應的高程值z,對地表進行連續的描述表達,其數學函數式表達如下式所示:
z=(x,y), (x,y)∈DEM 所在的區域
(2)基于DEM的洪水淹沒分析計算模型
近年以來,基于數字高程模型(Digital Elevation Model,DEM),將水動力模型與地理信息系統技術相結合,來計算、顯示洪水淹沒范圍是水利應用領域的研究熱點之一。針對DEM進行的淹沒分析可以分為“無源淹沒”與“有源淹沒”兩種。
無源淹沒適用于大面積的地形平坦區域均勻降水的情況下計算洪水淹沒區,無源淹沒僅僅將區域降水量的大小作為影響因素,并沒有考慮地形連通性的影響,處理過程相對簡單。它的原理是遍歷數字高程模型上每個點的高程值,只要該點的高程值小于給定洪水水位,即將其加入至淹沒區域,從而計算出最終洪水淹沒區域。
有源淹沒不僅僅考慮區域降水量的大小,還考慮到了地域連通性與水動力模型的影響,在洪水流動過程中,由于地形的阻擋,即使數字高程模型上某點的高程小于給定洪水水位,該點也不一定會淹沒,例如環形山地形,對于無源淹沒,環形山內外可能都會被淹沒,而對于有源淹沒,如果山外的洪水并沒有淹沒山頂,那么在環形山內部不能形成淹沒區。因此,有源淹沒更加符合實際的情況,但也更加復雜,考慮的因素要多于無源淹沒。
本文研究的種子蔓延算法屬于有源淹沒算法,它的基本原理是:從指定的種子點開始,向其相鄰的各個方向的網格進行搜索,逐個網格進行處理,直到遇到邊界。向不同方向進行搜索的方法包括“4-聯通算法”和“8-聯通算法”。從區域內任意一點出發,如果只是通過上、下、左、右四個方向搜索到達區域內的任意像素,則用這種方法填充的區域就稱為四連通域,這種填充方法就稱為“4-聯通算法”。如果從區域內任意一點出發,通過上、下、左、右、左上、左下、右上和右下全部八個方向到達區域內的任意像素,則這種方法填充的區域就稱為八連通域,這種填充方法就稱為“8-聯通算法”。在掃描過程中,如果網格屬性值為1,則做標記不再向外擴散,如果在掃描過程中,網格屬性值為0,則把該點作為新的種子點,并繼續向其相鄰的各個方向的網格進行遍歷、處理。
2 種子點蔓延算法的改進與實現
(1)數據結構“棧”的定義
棧(stack)又名堆棧,是在程序設計中一類非常重要的數據結構。棧是一種只能在一端進行插入或刪除操作的線性表,其中,允許進行插入或刪除操作的一端稱為棧頂,它是動態變化的,相應的,表頭端稱為棧底,棧底是固定不變的。
由棧的定義可以看出棧的特點,即“后進先出”,因此,棧也被稱為“后進先出”的線性表。假設棧S=(a1,a2,a3,…,an),則稱a1為棧底元素,an為棧頂元素。棧中元素按a1,a2,a3,…,an的次序進棧,則其退棧順序應該為:an,…,a3,a2,a1。
(2)種子蔓延模型算法——基于“棧”的種子遍歷算法的設計與實現
假設給定洪水水位為FloodLevel,洪水的淹沒原點為RasterPoint(x,y),其周圍的八個鄰域點為RasterPoint(i,j),其中,x-1≤i≤x+1;y-1≤j≤y+1。
基于“棧”的種子遍歷的種子蔓延模型算法原理是:首先,初始化淹沒區緩沖堆棧,從淹沒原點開始,判斷淹沒原點RasterPoint(x,y)是否小于給定洪水水位FloodLevel,若RasterPoint(x,y) ≤FloodLevel,則將其標記為可淹沒的柵格,并將其加入到淹沒區緩沖堆棧中,然后搜索其周圍的八個鄰域柵格點,將小于給定洪水水位為FloodLevel,即滿足條件RasterPoint(i,j) ≤FloodLevel的柵格加入到淹沒區緩沖堆棧中,同時標記為可淹沒的柵格,此時,彈出緩沖堆棧中的第一個元素,即RasterPoint(x,y),這時候,緩沖堆棧中的第一個元素應該為RasterPoint(x,y)鄰域柵格中的一個,假設為RasterPoint(x+1,y+1),這樣,第二次循環計算時候的淹沒原點就是RasterPoint(x+1,y+1),這樣重復第一次的計算即可。循環遍歷淹沒區緩沖堆棧中的所有柵格點,直至淹沒區緩沖堆棧為空,運算結束,從而可以得到淹沒區域的范圍。圖1為算法流程圖。
(3)實例應用——江西省遂川縣洪水淹沒模擬系統
“江西省遂川縣洪水淹沒模擬系統”是利用C#語言,借助于ESRI的ArcGIS Engine平臺,基于“棧”的種子遍歷算法而開發出來的用于抗洪分析的決策系統。通過輸入種子點坐標與淹沒水位,獲得淹沒柵格單元并將其轉化為矢量面從而計算出洪水淹沒范圍。并且借助ArcEngine中axGlobeControl控件以30米分辨率DEM作為高程數據源,以高分辨率衛星影像圖作為疊加影像,生成全景三維地形場景,最終將淹沒結果與三維場景疊加,生成三維場景下的山洪淹沒結果。使得淹沒模擬更加的逼真,可視性更強,為山洪決策提供更加良好的支持。圖2為假設淹沒原點在遂川縣煙頭村,預測洪水水位高程為20m時的淹沒范圍分析結果圖。
3 結語
本文研究的基于“棧”的種子遍歷算法,可以較為準確地計算出給定洪水水位條件下洪水淹沒范圍,相比以往研究中的遞歸算法,本文提出的改進算法可以極大提高程序的計算效率,節約系統資源,從而實現了更為高效的有源洪水淹沒分析。但是,在實際的洪水淹沒分析中,仍然需要考慮地形因素、氣候因素、水動力模型的影響等等,因此,在未來的研究中,算法仍有很多條件需要考慮并改進,為科學的防災救災提供更加科學的決策依據。
參考文獻:
[1]劉仁義,劉南.基于GIS的復雜地形洪水淹沒區計算方法[J]. 地理學報,2001,01:1-6.
[2]周品,李勇,譚建軍,孫芹芹.基于DEM的洪水淹沒計算機算法優化研究[J]. 微計算機信息,2007,03:196-198.
[3]湯國安. 數字高程模型教程[M].科學出版社, 2010.
[4]嚴蔚敏, 李冬梅, 吳偉民. 數據結構(C語言版)[J]. 計算機教育, 2012.endprint
總結
以上是生活随笔為你收集整理的有源淹没分析arcgis_基于DEM的有源洪水淹没分析算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安全管理实务之一:补丁管理(转)
- 下一篇: 视频编码的码率控制