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文件。
3.3 土壤數據庫建立
操作詳情見https://www.bilibili.com/video/BV1H7411n7Vs
打開Arcmap,進入3.2新建的SWAT工程,利用3.2導出的shp文件裁剪HWSD,提取出流域內的土壤分布類型,經統計共6種。
打開SWAT工程數據庫,SWAT2012.mdb,將6種土壤依次錄入,為方便查詢,土壤名稱直接用土壤ID表示,例如上圖左欄中的11291、11352等。注意,11387只有一層。記錄完畢,保存。
3.4 land use文件
我們選擇GLASS_GLC數據庫,由清華大學土地覆蓋監測網站提供(http://data.ess.tsinghua.edu.cn/),全球范圍的土地利用情況如下所示:
注意:
這時我們需要把語言換成英語,否則后續載入landuse柵格文件時會報錯(http://muchong.com/html/201406/7534220.html),更換語言方法參考(https://jingyan.baidu.com/article/ab0b5630b670dbc15afa7d02.html)。
利用3.2導出的shp文件裁剪GLASS_GLC,獲取研究區域內的土地利用信息,只有一種,數值為90,查閱分類表后確定該區域的土地利用類型為荒地:
GLASS_GLC數據庫包含分類文件labelInstruction.docx,內容為:
| Label | ? |
| 0 | 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,下方會出現對應表格。
雙擊LandUseSwat空格,可以手動選擇土地類型,選擇crop,選擇BARR,點擊Reclassify。
3.5.2 Soil Data控件
同樣的,依次填入,點擊Reclassify:
3.5.3 Slope控件
選擇坡度,為了方便我們直接選擇Single Slope,也就是不用分層,點擊Reclassify:
?
3.5.4 重載
以上三步完成后,勾選下方兩個選項框,點擊Overlay按鈕,進行疊加,將土地利用、土壤類型、坡度等水文特性疊加到每個HRU上,然后SWAT才能基于HRU進行產流、入滲、水質監測的計算工作。
點擊確定,大功告成!
3.5.5 篩選
點擊HRU Analysis - HRU Definition,進入篩選設置。SWAT為了簡化計算,提供了篩選功能,我們可以設置閾值,將小于該閾值的水文特性類型刪除,這里我們選擇10%,點擊Create?HRU。
3.6 氣象數據庫
打開Write Input Tables - Weather Stations,選擇氣象數據庫。這里有很多備用選項,可以導入其他數據庫,也可以自己輸入。我們選擇CFSR_World(https://www.bilibili.com/video/BV1H7411n7Vs下提供了鏈接),需要將下載到的CFSR_World.mdb手動復制到項目下的SWAT2012.mdb數據庫中,如下圖所示:
點擊Weather Generator Data按鈕,在下拉框選擇WGEN_CFSR_World(如果不進行上一步復制操作,這里將不顯示WGEN_CFSR_World),點擊OK,等待約1分鐘完成,點擊“確定”,然后點擊Cancel退出。
3.7?生成輸入參數表格
打開Write Input Tables - Write SWAT Input Tables,彈出清單表格, 點擊Select ALL,點擊Create Tables。
等待約1分鐘完成,點擊“確定”,然后點擊Cancel退出。
3.7 運行SWAT
做完上述工作,我們已經完成了SWAT運行的全部準備工作,打開SWAT Simulation - Run SWAT,進入最后的時間跨度和分辨率、SWAT編譯器等設置(我偷偷換了個PC,嘿嘿):
選擇時間跨度2000/1/1 - 2015/12/31,時間分辨率1個月,點擊Setup SWAT Run,完成預備工作,點擊Run SWAT,開始計算。
但是出現了這一幕:
問題描述:Fortran編譯過程出錯,讀數據時讀到文件末尾。我們打開出現問題的文件000120004.sol,發現它竟然是空的,而000120001.sol -?000120003.sol都沒有問題。
查閱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,保存。
再次測試,還是出現同樣的問題:
考慮是否是參數范圍的問題,對照SWAT2012.mdb的solrng.dbf數據庫(如下圖所示),對數據庫進行檢查:
檢查完畢,并沒有問題。
看一下.sol文件的命名規律,根據各個.sol文件的內容,我們推測:前5位000xx為subbasin編號,后四位00xx為每個subbasin中的HRU編號,這樣一來就是第12個子流域的第4個HRU出現問題,沒有寫入土壤信息。
打開Edit SWAT Input - Subbasins Data,選中11561號土壤,點擊OK
出現如下界面,證明該土壤類型已被正確導入:
返回文件夾,打開000120004.sol,發現已經寫入文本了:
重新測試,剛才的問題解決了,但是又出現了新問題(我人傻了):
只能從配置文件入手了。打開file.cio文件(位于工程目錄/Scenarios/Default/TxtInOut/下),發現降雨和溫度數據均為空,說明WGEN_CFSR_World數據庫在該區域沒有站點,導致計算失敗。
此時我們需要手動添加該區域的氣象數據。打開下載到的中國地面氣候資料日值數據集V3.0(原地址http://data.cma.cn/data/cdcdetail/dataCode/SURF_CLI_CHN_MUL_DAY_V3.0.html,但是下載很不方便,好在本站有資源,可以花C幣下載之,時間跨度2010-2019年),查看站點分布,利用matlab inpolygon函數,發現共有3個站點位于石羊河流域,但是方塊里(紅色區域)一個都沒有:
有種前功盡棄的絕望感。。。
本次測試到此為止,雖然沒有成功,但熟悉了SWAT的流程,掌握了許多實用的ArcGIS技巧,比如關于數據庫的建立、坐標系統的轉化、異常事件查詢與解決等,都為下一次的成功積累經驗。
讓我們期待SWAT模型學習(四)吧!
?
?
總結
以上是生活随笔為你收集整理的SWAT模型学习(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 自动安装mysql_linu
- 下一篇: AppLoader的使用