天天看點

SWAT模型學習(三)

3 SWAT模型測試

3.1 介紹

由于長江流域面積巨大,土壤類型衆多,測試、修改的成本太高,是以我們選擇一個較小的區域進行試驗。

試驗區域為河西走廊的石羊河流域,我們選擇了一個30km×20km的小區域,該區域包含了石羊河支流大西河的出口,作為水系劃分的出口(http://slt.gansu.gov.cn/syhglj/)。

3.2 流域水系劃分

操作詳情見https://www.bilibili.com/video/BV1H7411n7Vs

打開Arcmap,建立SWAT工程,進入Automatic Watershed Delineation界面,導入BJ54空間坐标系的DEM,子流域面積門檻值選擇2E-7Ha,自動填窪後生成河道。确定出口後生成了10個子流域,将顯示為紅色框的Basin要素導出為shp檔案。

SWAT模型學習(三)

3.3 土壤資料庫建立

操作詳情見https://www.bilibili.com/video/BV1H7411n7Vs

打開Arcmap,進入3.2建立的SWAT工程,利用3.2導出的shp檔案裁剪HWSD,提取出流域内的土壤分布類型,經統計共6種。

SWAT模型學習(三)

打開SWAT工程資料庫,SWAT2012.mdb,将6種土壤依次錄入,為友善查詢,土壤名稱直接用土壤ID表示,例如上圖左欄中的11291、11352等。注意,11387隻有一層。記錄完畢,儲存。

3.4 land use檔案

我們選擇GLASS_GLC資料庫,由清華大學土地覆寫監測網站提供(http://data.ess.tsinghua.edu.cn/),全球範圍的土地利用情況如下所示:

SWAT模型學習(三)

注意:

這時我們需要把語言換成英語,否則後續載入landuse栅格檔案時會報錯(http://muchong.com/html/201406/7534220.html),更換語言方法參考(https://jingyan.baidu.com/article/ab0b5630b670dbc15afa7d02.html)。

利用3.2導出的shp檔案裁剪GLASS_GLC,擷取研究區域内的土地利用資訊,隻有一種,數值為90,查閱分類表後确定該區域的土地利用類型為荒地:

SWAT模型學習(三)

GLASS_GLC資料庫包含分類檔案labelInstruction.docx,内容為:

Label
No data
10 Cropland 農田,耕地
20 Forest 森林
30 Grassland 草原
40 Shrubland 灌木
70 Tundra 凍土帶
90 Barren land 荒地
100 Snow/ice 雪/冰

3.5 HRU分析

打開SWAT工程,HRU Analysis - Land Use/Soils/Slope Definition

3.5.1 Land Use Data控件

在Land Use Grid下導入已經定義投影的landuse資料,Choose Grid Field選擇VALUE,點選OK,下方會出現對應表格。

SWAT模型學習(三)

輕按兩下LandUseSwat空格,可以手動選擇土地類型,選擇crop,選擇BARR,點選Reclassify。

3.5.2 Soil Data控件

同樣的,依次填入,點選Reclassify:

SWAT模型學習(三)

3.5.3 Slope控件

選擇坡度,為了友善我們直接選擇Single Slope,也就是不用分層,點選Reclassify:

SWAT模型學習(三)

3.5.4 重載

以上三步完成後,勾選下方兩個選項框,點選Overlay按鈕,進行疊加,将土地利用、土壤類型、坡度等水文特性疊加到每個HRU上,然後SWAT才能基于HRU進行産流、入滲、水質監測的計算工作。

點選确定,大功告成!

SWAT模型學習(三)

3.5.5 篩選

點選HRU Analysis - HRU Definition,進入篩選設定。SWAT為了簡化計算,提供了篩選功能,我們可以設定門檻值,将小于該門檻值的水文特性類型删除,這裡我們選擇10%,點選Create HRU。

SWAT模型學習(三)

3.6 氣象資料庫

打開Write Input Tables - Weather Stations,選擇氣象資料庫。這裡有很多備用選項,可以導入其他資料庫,也可以自己輸入。我們選擇CFSR_World(https://www.bilibili.com/video/BV1H7411n7Vs下提供了連結),需要将下載下傳到的CFSR_World.mdb手動複制到項目下的SWAT2012.mdb資料庫中,如下圖所示:

SWAT模型學習(三)

點選Weather Generator Data按鈕,在下拉框選擇WGEN_CFSR_World(如果不進行上一步複制操作,這裡将不顯示WGEN_CFSR_World),點選OK,等待約1分鐘完成,點選“确定”,然後點選Cancel退出。

SWAT模型學習(三)

3.7 生成輸入參數表格

打開Write Input Tables - Write SWAT Input Tables,彈出清單表格, 點選Select ALL,點選Create Tables。

SWAT模型學習(三)

等待約1分鐘完成,點選“确定”,然後點選Cancel退出。

SWAT模型學習(三)

3.7 運作SWAT

做完上述工作,我們已經完成了SWAT運作的全部準備工作,打開SWAT Simulation - Run SWAT,進入最後的時間跨度和分辨率、SWAT編譯器等設定(我偷偷換了個PC,嘿嘿):

SWAT模型學習(三)

選擇時間跨度2000/1/1 - 2015/12/31,時間分辨率1個月,點選Setup SWAT Run,完成預備工作,點選Run SWAT,開始計算。

但是出現了這一幕:

SWAT模型學習(三)

問題描述:Fortran編譯過程出錯,讀資料時讀到檔案末尾。我們打開出現問題的檔案000120004.sol,發現它竟然是空的,而000120001.sol - 000120003.sol都沒有問題。

SWAT模型學習(三)

查閱SWAT使用手冊(https://wenku.baidu.com/view/5f1d74eb0975f46527d3e195.html),.sol檔案是土壤輸入檔案,可能是soil部分出了問題。參考(https://blog.csdn.net/Chris_Ning/article/details/98242315?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159841213819724839203572%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=159841213819724839203572&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v3-1-98242315.pc_ecpm_v3_pc_rank_v3&utm_term=SWAT%E8%BF%90%E8%A1%8C%E5%A4%B1%E8%B4%A5&spm=1018.2118.3001.4187),檢查土壤資料庫usersoil,果然發現第四行的11387号土壤的描述有誤,本來隻有1層,但第二層卻有了相關記錄,且與第一行的11291号土壤一緻,可能是導入時出現錯誤。将第二層資料全部改為0,儲存。

SWAT模型學習(三)

再次測試,還是出現同樣的問題:

SWAT模型學習(三)

考慮是否是參數範圍的問題,對照SWAT2012.mdb的solrng.dbf資料庫(如下圖所示),對資料庫進行檢查:

SWAT模型學習(三)

檢查完畢,并沒有問題。

看一下.sol檔案的命名規律,根據各個.sol檔案的内容,我們推測:前5位000xx為subbasin編号,後四位00xx為每個subbasin中的HRU編号,這樣一來就是第12個子流域的第4個HRU出現問題,沒有寫入土壤資訊。

SWAT模型學習(三)

打開Edit SWAT Input - Subbasins Data,選中11561号土壤,點選OK

SWAT模型學習(三)

出現如下界面,證明該土壤類型已被正确導入:

SWAT模型學習(三)

傳回檔案夾,打開000120004.sol,發現已經寫入文本了:

SWAT模型學習(三)

重新測試,剛才的問題解決了,但是又出現了新問題(我人傻了):

SWAT模型學習(三)

隻能從配置檔案入手了。打開file.cio檔案(位于工程目錄/Scenarios/Default/TxtInOut/下),發現降雨和溫度資料均為空,說明WGEN_CFSR_World資料庫在該區域沒有站點,導緻計算失敗。

SWAT模型學習(三)

此時我們需要手動添加該區域的氣象資料。打開下載下傳到的中國地面氣候資料日值資料集V3.0(原位址http://data.cma.cn/data/cdcdetail/dataCode/SURF_CLI_CHN_MUL_DAY_V3.0.html,但是下載下傳很不友善,好在本站有資源,可以花C币下載下傳之,時間跨度2010-2019年),檢視站點分布,利用matlab inpolygon函數,發現共有3個站點位于石羊河流域,但是方塊裡(紅色區域)一個都沒有:

SWAT模型學習(三)

有種前功盡棄的絕望感。。。

本次測試到此為止,雖然沒有成功,但熟悉了SWAT的流程,掌握了許多實用的ArcGIS技巧,比如關于資料庫的建立、坐标系統的轉化、異常事件查詢與解決等,都為下一次的成功積累經驗。

讓我們期待SWAT模型學習(四)吧!