ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SWAT环境建模从入门到实战:流域划分、HRU分析与模型率定全解析

SWAT环境建模从入门到实战:流域划分、HRU分析与模型率定全解析 SWAT这套环境仿真软件我在流域水文方向摸爬滚打了这些年可以说它是做非点源污染模拟、土地利用变化影响评估最绕不开的工具之一。很多人刚接触SWAT时第一反应是“这界面也太不友好了”“数据格式怎么这么死板”好不容易装好了软件又不知道该从哪下手。很多网上教程只教你怎么点按钮却不说清楚为什么要这样点结果就是换个研究区就彻底卡壳。这篇文章是SWAT环境建模系列的第二篇重点补上“环境建模基础”这一课——不是软件操作速查而是把SWAT背后的建模逻辑、数据准备、流域划分、HRU分析、模型率定这一整条线捋明白。适用对象是想真正把SWAT用起来的人不管你是写论文还是做工程项目这套思路都能帮你少走好几个月的弯路。1. 环境建模之前先把“为什么建”想清楚1.1 建模的本质是用数学语言描述流域行为我见过太多这样的人拿到一份DEM就急着导入ArcSWAT鼠标一通点子流域划出来了结果根本说不清自己到底想模拟什么。这不叫建模叫软件操作练习。建模的第一步不是打开软件而是想清楚你要回答什么科学问题。比如你要问“这个流域未来十年面源污染总量怎么变化”还是“不同耕作方式对径流量的影响有多大”这两个问题对模型结构、输入数据、时间尺度的要求是完全不同的。这个道理有点像做饭你是想做一碗阳春面还是想做一桌宴席决定了你要备多少菜、开几个灶。SWAT给了你一套可以做“满汉全席”的锅碗瓢盆但你先得知道自己今天想吃什么。一旦模型框架搭错了后边所有工作都是在错误的地基上盖楼越努力越尴尬。1.2 为什么水文模拟大多选择SWAT环境建模领域可选的工具不少有HEC-HMS、MIKE SHE、VIC也有近年越来越常见的分布式物理模型。SWAT能成为应用面最广的流域模型之一核心优势在于它“半分布式”的架构设计既不像集总式模型那样把整个流域当成一个黑箱也不像全分布式模型那样对计算资源和数据精度要求高到不切实际。SWAT把流域按子流域和水文响应单元HRU两层结构组织能反映下垫面空间异质性对水文过程的影响又通过HRU的概化把计算量控制在了普通工作站能承受的范围内。再加上它内置了完整的作物生长、营养物迁移、泥沙输移模块一套模型可以同时应对水量、泥沙、氮磷、农药等多个目标这在做环境规划和管理时特别香。但要注意SWAT的时间尺度设计上是“长期连续模拟”更适合做日尺度以上的水文过程分析。你要是想模拟单场暴雨的小时级洪水过程还是老老实实用分布式水文模型或者专门的洪水模型吧拿SWAT硬扛单场洪水属于用错了工具。1.3 从概念模型到数学模型的两个映射建模的核心工作是做两个映射。第一个映射是把现实世界的物理过程映射成概念模型水从天上降下来一部分被植被截留一部分渗入土壤一部分变成地表径流土壤里的水下渗到浅层地下水再通过基流回归河道。这个过程在SWAT里被分解成了水文循环的各个子模块这就是“概念模型”的数字化表达。第二个映射是把概念模型映射成一组数学方程和参数。SWAT把所有陆面水文过程归结为水量平衡方程SWATΔSP−ET−Q−L其中P是降水量ET是蒸散发Q是地表径流L是渗漏量ΔS是土壤含水量的变化量。模型每天对这个方程在每个HRU上求解一次这就是SWAT“逐日连续演算”的运行机制。理解了这个双映射过程你就明白了为什么数据准备阶段那么强调物理准确性——因为每个输入参数都要映射到现实中的某个可测量的物理量。SWAT不是数据扔进去就能出好结果的魔盒它的底子是一套严谨的水文物理方程。2. SWAT建模的四大基础数据质量决定模型上限2.1 DEM数据流域地貌的骨架DEM数字高程模型是SWAT建模第一个要用的数据整个流域的河网提取、子流域划分、坡度分析全都要倚仗它。可以说DEM的分辨率和精度直接决定了后续所有空间分析的地基质量。我常用的DEM来源有三个SRTM 30米、ASTER GDEM 30米如果在国内也可以使用地理空间数据云的高分辨率数据。对于面积几百到几千平方公里的流域30米分辨率的DEM基本够用但如果研究区是小流域或者地形起伏特别复杂建议尽量找12.5米甚至更高精度的数据。拿到DEM以后第一个操作步骤是投影换带。SWAT对投影坐标比较敏感它内部的距离计算和面积统计都默认基于投影后的坐标系统。你要是拿WGS84经纬度的原始栅格直接导入虽然能跑通但坡度算出来是错的HRU面积统计也会出问题后边率定怎么调都调不出合理结果。我的习惯是把所有空间数据统一投影到流域所在区域的UTM投影带或者Albers等面积投影像元大小统一重采样到与DEM一致。这样后边加载土地利用、土壤类型栅格时才能保证像元对齐叠置分析的结果才可靠。2.2 土地利用数据人类活动的直接体现土地利用数据在SWAT里直接影响径流曲线数CN2、植被覆盖、地表糙率这些关键参数。CN2是一个极其敏感的水文参数它把地表覆盖、土壤类型和前期的湿润程度综合成了一个经验数值直接影响地表径流的大小。所以土地利用分类图的质量在源头上决定了径流模拟准不准。SWAT官网提供了全球及多个区域的30米分辨率土地利用产品可以直接下载使用分类体系跟SWAT数据库是匹配的省去了很多重分类的麻烦。以前做研究时我拿到国内的土地利用数据分类编码是二级地类系统和SWAT的农田AGRL、林地FRSD、水域WATR等四字母分类编码完全不对应这时候就需要做重分类表。重分类这个环节我踩过一次大坑某次把“旱地”归到了“一般农业用地”但这个流域实际种的是水稻应该归到水稻田RICE结果下渗参数全错了基流比例怎么调都偏小。后来我学乖了凡是拿到的土地利用原始分类和SWAT标准分类不一致的一定要结合地面验证点或者高分辨率影像抽样核对别想当然地对着分类表硬套。2.3 土壤数据建模里最容易翻车的环节说实话SWAT建模过程中最让人头疼的就是土壤数据。SWAT的土壤数据库要求的是物理属性包括土壤分层厚度、砂粒黏粒有机碳含量、有效含水量、饱和导水率等这些参数在国内的常规土壤普查资料里往往不直接提供需要你自己去找土壤剖面数据然后通过土壤水特性程序SPAW计算推导。土壤参数的缺失是新手最常见的问题。我见过不少人在土壤数据库环节卡了半个月就是因为找不到研究区的详细土壤剖面数据。我的建议是优先找国际土壤数据库像HWSD世界和谐土壤数据库提供了全球系统分类的土壤数据可以直接从SWAT官网下载已经构建好的土壤数据库然后按研究区土壤类型代码做映射。对比一下不同处理方式的差别数据来源优点缺点适用场景SWAT官网全球土壤数据库直接可用、省时间空间精度较粗大中流域、预研究HWSD SPAW计算精度可控、可定制需要手动处理较多研究区土壤类型单一实测剖面数据最准确成本高、点位有限科研项目、重要工程区另外有一个细节SWAT的土壤数据库要求至少定义两层每层必须填对土层厚度、粒径组成和有机碳。设置时把土层数写少了后面所有HRU的土壤属性读取都会报错这是个纯低级但特别常见的坑。2.4 气象数据驱动模型的“源”气象数据是驱动SWAT模型运行的“源”。SWAT每模拟一天都需要当天的降水、最高最低温。太阳辐射、相对湿度、风速这四项是可选的但强烈建议尽量集齐因为蒸散发ET对辐射和湿度敏感ET又是水量平衡的“大头”缺了这些项模型的蒸发计算就只能靠内置生成器“编”数据精度自然打折扣。气象数据的时间尺度要和模拟步长匹配。SWAT默认是日步长常见做法是准备至少十年以上的日气象序列。有一个容易被初学者忽略的点SWAT的降水数据要求是毫米/天气温要求是摄氏度风速是米/秒辐射是兆焦耳/平方米·天单位搞错了模拟结果就会以“科学怪人”的方式呈现——径流量动辄几十倍地偏大或偏小。实测气象数据不足时SWAT提供了天气发生器WGN作为替补方案根据月平均气候统计值来插补缺测日。这个功能在数据不完整的地区非常实用只需要按月填入平均降水、降水标准差、干湿日概率、平均最高温、平均最低温、温标准差、平均辐射、平均露点温度、平均风速十项统计参数模型就能生成一整年的模拟气象输入。不过要记住生成器生成的是“平均态”的天气对极端暴雨事件的还原能力有限。3. 流域划分与HRUSWAT的空间逻辑核心3.1 从DEM到河网的自动化演算SWAT的子流域划分流程本质上是数字地形分析的标准化流水线。第一步是填洼和计算流向第二步是计算汇流累积量第三步设置一个最小汇流面积阈值把累积量超过阈值的栅格判定为河道整个流程在ArcGIS的地形分析工具箱中都有成熟实现。初始DEM里常有各种“坑坑洼洼”的伪洼地如果不先填洼水流方向计算会出现“汇而不流”的死循环。SWAT里填洼用的是“填充”算法把低于周围高程的像元填到周围最低出口的高程。这个操作必须小心如果研究区内有真实的洼地型湿地过度填洼会把真实的蓄水区抹掉。汇流累积法的原理是这样的假设每个栅格接收一个单位的降水按最陡坡降方向汇流落在下坡栅格上的累积水量代表有多少上游栅格的水汇到了这个点。设定阈值后累积量超过阈值的栅格构成河道网。阈值越小河网越加密子流域划得越多。3.2 子流域划分阈值怎么选阈值是子流域划分时你要做的最重要决策之一。阈值设置得小河网密、子流域数量多模型对空间细节的刻画更细但每个子流域需要单独的气象输入和参数化计算量大增阈值设置得大子流域少、计算快但过粗的划分会抹平空间异质性。实际操作中我的做法是先试几个阈值观察模拟出的子流域面积和数量再结合研究尺度做一个合理选择。比如一个1000平方公里的流域如果阈值设500公顷大概会得到几十个子流域如果设100公顷可能一下子蹦出两百多个子流域。对于一般的水文和水质模拟我个人经验是子流域数量控制在研究区面积除以最小可管理水文单元面积目视河道密度跟实际地形图吻合即可。一个值得借鉴的做法是先导入已有的河网数据与自动提取的河网对比如果自动提取的河道位置跟实际明显不重合说明DEM精度不够或者阈值设置不合理需要调整而不是将错就错往下走。3.3 HRU水文响应单元的魔法HRU是SWAT最具特色的空间概念。它的全称是水文响应单元通俗地说就是一个“水文行为相似”的最小计算单元。SWAT在每个HRU上独立计算水文过程然后把结果汇总到子流域出口。HRU的生成过程是把土地利用、土壤类型、坡度三个图层叠在同一个子流域内做叠加分析再设定一个阈值来删除面积占比太小的组合类别。为什么要做HRU概化根本原因是物理上精确到像元级别的模拟对数据量和计算量的需求在当时设计SWAT的年代是完全不现实的。把一片子流域内土地覆被和土壤相似的区域归并成一个单元用一组均化的参数来计算既保留了空间差异又把计算量控制在可接受范围——这就是“半分布式”的核心思想。HRU阈值的设定直接影响模拟结果的精度。比如某个子流域里有一片竹林地只占了3%如果你把阈值设成5%这片竹林就会被合并到其他地类里如果竹林恰好是影响这个流域水文过程的关键下垫面模拟结果就会失真。我一般把土地利用阈值设成5%以下土壤阈值设成10%以下坡度重新分类设成两到三级这样既保留大部分关键HRU又不会生成太多面积过小的碎块。3.4 坡度分级不可忽视的一环SWAT的HRU划分默认考虑坡度但很多人图省事直接用默认的单级或者不设置坡度分类。这样做会造成什么后果如果整个流域地形平坦问题不大如果研究区是丘陵或山区不把坡度纳入HRU分类那同一个HRU里可能既有陡坡又有缓坡坡面产汇流特性差异巨大却被当成一个均质单元算径流和泥沙模拟都会严重失真。SWAT里坡度分类的做法是在HRU分析之前先做坡度重分类建议设置三到四个坡度带比如0-2%、2-8%、8-15%、15%以上这样能较好地反映坡面产流随坡度增大而增大的物理趋势。分类的坡度阈值你可以根据研究区实际地形调整如果流域内山地为主可以把坡度带划分得更细一些。我做过一个对比实验同一个流域用单级坡度和四级坡度分别建模结果显示四级坡度方案下的模拟径流对降雨事件的响应更灵敏洪峰出现的时间更合理但由于增加了HRU数量整个模型运行时间差不多增加了百分之三十。这就是典型的精度和速度的权衡大家要根据自己的硬件条件和对精度的要求来做取舍。4. 从空项目到跑通模拟实操全流程拆解4.1 新建项目与空间参考设置正式建模的第一步是设置一个合理的工作目录和项目空间参考。SWAT会把所有中间文件、数据库文件都写到项目文件夹下如果你在网盘同步目录里跑模型那些频繁读写的临时文件会不断触发同步不仅拖慢速度还有可能损坏数据库。建议在本地磁盘建立一个不带中文和空格的路径例如D:\SWAT_Projects\StudyArea\。打开项目属性第一件事就是把投影坐标系设为跟DEM一致。有同学在这里不设置或者设置错了到后边加载栅格数据时会出现“偏移/对不齐”那是因为软件按照不同的坐标系去解析栅格的位置了。4.2 加载DEM、填洼、河网阈值与子流域划分在ArcSWAT或QSWAT中加载DEM后软件会依次执行填洼、流向、汇流累积计算。这一步不需要你手动调用ArcGIS工具软件内部会完成但你要设置河网定义阈值。软件会默认填一个值但通常和你的流域尺度不匹配你得手动改。举个例子我做过一个大约600平方公里的流域DEM分辨率30米。第一次使用默认阈值自动提取的河网“密得像树根”子流域分了近300个之后跑一次模型慢到怀疑人生。把阈值提高到2000公顷之后子流域数量降到28个模拟结果反而更稳定因为每个子流域内的HRU组合都有足够的数据支撑极端类别被合并后参数估值的不确定性也降低了。把子流域划分结果与真实水系叠加对照确认河网位置和干流走向合理以后再计算子流域参数包括平均高程、平均坡度、河道长度、河道坡度等这些参数会被写入SWAT的数据库供河道演算模块使用。4.3 导入土地利用、土壤数据并建立关联子流域划分完成后软件会进入加载土地利用和土壤数据的环节。这里最关键的是每个栅格值需要与SWAT数据库中的分类代码建立查表关系。比如土地利用数据的栅格值是数字代码你需要提供一个索引表把这些代码映射到SWAT的四字母分类代码。通过交互式重分类界面逐类选择对应关系这一步要特别仔细类别映射错了不会报错但后期率定时你怎么也调不对来源就是这里。土壤数据同样需要重分类将土壤图的代码映射到usersoil数据库中的土壤类型ID。如果用的是SWAT自带的全球土壤数据库代码通常是现成的如果是自己构建的土壤数据库需要确保土壤查询表中每个ID都有对应的物理属性记录否则HRU分析时会大面积报错。4.4 HRU分析一次设置决定模型结构HRU分析界面提供了几项关键设置土地利用阈值、土壤阈值、坡度分级数。设置项虽然不多但组合起来五花八门建议参考以下参数组合土地利用阈值5%土壤阈值10%坡度分级2级或者3级是否忽略单一地类/单一土壤建议不忽略是否在HRU中考虑坡度建议是点击生成按钮之后软件会遍历每个子流域内三种图层的组合删掉占比小于阈值的组合为每个保留的组合生成唯一的HRU编号并计算每个HRU的面积比例。HRU划分完成后你会得到一个汇总表格上面是每个子流域的HRU数量和面积占比。如果总的HRU数量明显超出预期比如上万跑一次模型可能会很吃力应回到前一步调高阈值重新生成。4.5 气象站点定位与气象数据文件准备HRU分析完成后下一步就是气象数据的输入。SWAT要求你至少指定一个降水站和一个气温站的经纬度并把实测数据文件放入项目目录。站点位置不一定要精确到米级但必须落在流域范围内或者紧邻流域边界否则模型在空间插值时会对降水分配产生不合理的距离权重。气象数据文件有两种格式一种是文本文件第一行是站号第二行开始是年份、月份、日期、观测值另一种是用数据库管理。这里分享我的具体写法第一行填站名和坐标信息然后从第二行开始按固定格式组织数据。注意缺测值要填-99SWAT对缺测值的自动插补逻辑依赖于它。如果你填了0表示缺测模型就会把“无数据”当成“无降水”夏季模拟结果可能一连几天一滴雨都没有径流曲线就变得干瘪无比。要特别小心日期范围要和模拟起止时间匹配。SWAT不会帮你检查气象数据覆盖范围如果模拟期从2010年1月1日开始而气象数据从2010年3月才起始模型会用默认值填补前两个月的空白结果就是冬季径流完全失真。4.6 运行模拟预热期和输出步长怎么设所有数据准备完毕点下“运行SWAT”按钮之前还有三个参数要确认。第一个是模拟起止时间第二个是预热期warm-up period第三个是输出步长。预热期特别重要。模型在第一天启动时土壤初始含水量、地下水储量、积雪量都是未知的一般是按默认的50%或者某个初值填充。如果起点设得和流域实际状态差太远模型前期的径流模拟会有明显偏差。解决办法就是跳过初始阶段不纳入评价让模型先跑几年来“热起来”让土壤水和地下水储量在降水驱动下自行调整到相对平衡的状态。一般建议预热期至少设2到3年如果你模拟的是连续干旱多年之后的湿润年份预热期还要更长。输出步长通常选日输出便于和实测流量对比。如果你的目标不是日过程而是月总量或年总量可以选月输出但率定时还是建议用日输出信息量大得多。5. 模型的建模和率定从“能跑”到“可信”5.1 率定是建模的下半场模型能跑通只是万里长征第一步。你拿到的SWAT参数默认值反映的是美国地区的平均特征拿到中国某个流域来用不校准参数就想让模拟径流和实测吻合几乎是不可能的事。模型率定就是通过调整关键参数让模拟结果尽可能贴合实测资料的过程。SWAT的建模和率定在工程实践中是“三步走”参数敏感性分析→参数率定校准→模型验证。敏感性分析用来找出哪些参数对目标变量的影响最大率定只调整这些敏感参数避免盲目调参。校准是调整参数让模拟期结果和实测吻合验证则是用另一段独立时段的实测数据来检验模型证明模型不是只对校准期“背答案”而是真的学到了流域的水文规律。5.2 敏感性分析别把时间浪费在无效参数上SWAT有几十个水文参数手动一个个试过去既不现实也不科学。虽然SWAT自带敏感性工具但最专业的做法是用SWAT-CUP这类独立的参数率定软件它对SWAT进行了标准化封装支持全局敏感性分析和自动校准。以径流校准为例我实践中对结果影响排名前列的参数通常包括参数名称含义调整范围经验区间CN2径流曲线数SCS影响地表径流量±20%ALPHA_BF基流衰退系数影响基流比例0.010.1SOL_AWC土壤有效含水量影响土壤蓄水和蒸散发±20%ESCO土壤蒸发补偿系数影响蒸发强度0.51.0GWQMN浅层地下水出流阈值影响基流阈值0500 mmCH_K2河道有效导水率影响河道渗漏0150 mm/h通过敏感性分析你会发现不同流域类型对参数的敏感性排序差异非常大。比如干旱半干旱区地下水参数的主导作用更明显湿润区CN2和蒸散发参数的敏感性更高。这种“因流域制宜”的率定思路才能保证你不把来之不易的实测数据浪费在无关紧要的参数上。5.3 率定顺序水量先行泥沙、水质随后我踩过最深的坑是一上来就同时调水量和泥沙参数结果泥沙模拟调好了径流又跑偏了两边互相打架陷入了无穷反复。这个教训让我彻底认可了一个固定流程率定一定是按照水量→泥沙→营养盐的顺序逐步推进。水量校准阶段只看径流。判定指标常用纳什效率系数NSE、决定系数R²和百分比偏差PBIAS。NSE大于0.5说明模拟结果可以接受大于0.65属于良好大于0.75就是优秀了。R²衡量模拟和实测的线性相关程度PBIAS衡量总体偏差理想的PBIAS在±10%以内。径流率定稳了再开泥沙模块的率定。泥沙对土地利用和坡度的响应极其敏感如果你HRU里的坡度分级不合理泥沙模拟必然失真这不是靠调参数就能救回来的。最后才是氮磷等营养盐的率定养分的循环过程涉及土壤初始养分库这些初值的来源和合理性必须在论文或报告里说清楚。5.4 手动率定的基本功逐个参数调还是自动寻优现在做率定主流的做法是用SWAT-CUP自动寻优常用的算法有SUFI-2、GLUE、PSO等其中SUFI-2是用得最广泛的一种。它会自动生成多组参数组合并行运行SWAT然后依据目标函数值迭代搜索最优参数区间也能给出不确定性范围是目前平衡计算效率和结果可解释性的优选方案。不过我也建议大家别完全依赖自动率定因为自动率定容易产生“过拟合”参数组合在率定期拟合得极好一到验证期就崩盘。比较好的策略是先手动分析实测径流过程线判断模型的主要误差来源比如基流占比不对就调地下水参数洪峰偏高就调CN2季节性蒸发误差就调ESCO在这个过程中你会对流域水文规律有更深刻的认识。把这种理解带进自动率定里设定合理的参数敏感区间和初始范围得到的率定结果才不只是一堆数字的偶然巧合。验证阶段特别要提醒验证期的气象条件如果和率定期差异很大比如率定期偏旱验证期偏涝模型的验证误差往往会偏大。这时候不要急着怀疑率定有问题先检查气象数据的准确性再做判断。误差来源要定位清楚别让模型背不该背的锅。5.5 率定报告里必须交代清楚的细节最后提醒一个科研和工程文本层面的要求模型率定报告必须可以复现。这意味着你要交代清楚率定期和验证期各是多少年为什么这样划分通常用湿润年和干旱年交叉验证选用了哪些参数参数的初始区间和最终率定值评价指标的计算结果NSE、R²、PBIAS、KGE等率定过程中是否修改过HRU结构和气象输入如果改过必须说明原因。这么做不仅是为了应对审稿人也是对自己的建模过程负责。水文模拟本来就是“输入不确定→参数不确定→结构不确定”的链条不把每一步交代清楚你的结果就缺乏可信根基。6. 高频报错与结果异常多年踩坑经验汇总6.1 气象数据格式类报错SWAT报错中气象数据格式问题是出现频率最高的。比如提示“气象文件行数错误”十有八九是日期格式少了空格或者缺省值不对。建议用固定宽度文本格式不要用Tab键分隔因为SWAT的读取规则固定在列位置不小心多了一个字符就会整个文件解析失败。小技巧写一个简单的Python或Excel脚本把标准气象站数据批量转换成SWAT格式并在转换时自动检验日期连续性和值的范围。我在实际工作中吃过这个亏后专门写了转换脚本每次换研究区直接复用效率翻倍。6.2 土壤数据库报错“找不到土壤属性”这个报错信息会出现在HRU分析或者写SWAT数据库输入文件时。排查思路很清晰打开土壤查询表对照土壤类型代码逐条检查土壤物理属性是否完整。常见的坑有土层厚度填了0、砂粒黏粒含量比例加起来不等于100、有机碳含量缺失。这些基础数据看起来不起眼但任何一个缺失都会让模型在读取HRU属性时报错退出。6.3 模拟结果径流恒为0如果你跑完模型发现流量出口全程为零别慌按这个顺序排查第一检查降水数据文件看看里头是不是真的写了降水量第二检查CN2参数有没有被错误地设置为极低值第三检查预热期是否足够前几天没径流正常要是整整一年都没径流那就是数据问题第四检查子流域面积和HRU面积是否异常如果有HRU面积为零或者极小模型计算时会出现数值溢出。6.4 蒸发量异常偏大或偏小蒸散发在SWAT水量平衡中占比极高模拟的总水量误差往往来自于蒸发模块的偏差。如果蒸散发异常偏大优先检查太阳辐射数据是否合理如果偏小检查植被生长是否正常SWAT里植被覆盖度直接作用于蒸散发再检查土壤有效含水量设置是否合理。如果用的是天气发生器生成气象数据且研究区和生成器默认值差异很大比如温度标准差明显不对那蒸发量异常几乎是必然的。这时候你需要去官网找生成器统计参数计算工具根据流域气象站逐月资料重算十大统计参数。6.5 率定“越调越差”怎么办调参过程中明明某个参数朝一个方向调目标函数开始变好了继续朝同一方向调反而变差这种情况非常常见。原因可能是参数之间存在强相关性——比如CN2和SOL_AWC同时增大时一个增大地表径流、一个增大土壤蓄水两个参数的效应互相抵消单参数敏感性分析看不出来。遇到这种情况我的建议是停止盲目调参回到敏感性分析结果重新评估参数间的相关性优先调整排名高且相关性弱的参数固定次要参数为经验值。有时候只要换一个参数组合目标函数会以更快的速度收敛。率定本质上是个“系统寻优”问题不是“逐个微调”就能解决的。6.6 模型结果“还行”但不科学的隐性问题最后说一个NSE数值漂亮但模型实际不合理的隐性场景参数被率定到了物理允许范围之外。比如CN2被调成了90以上同时SOL_AWC被调成接近0模型在模拟期径流总量确实吻合了但这样的参数组合没有物理基础在预测未来气候变化或土地利用情景时结果完全不可信。所以率定的底线是参数取值必须在物理合理范围内而不是在数学寻优范围内。我会在率定结束后逐个人工复查关键参数的最终值确认它们落在实际流域的合理区间内。宁可让NSE略降0.05也不接受一个物理上解释不通的参数组合。这一点可以说是模型从“会跑”到“可信”的分水岭。我个人这几年最大的体会是SWAT建模真正的基础不在于软件操作熟练度而在于你能不能把流域里的每一个水文过程在脑子里“演”一遍。软件只是把你想清楚的物理过程算得更快罢了。给还在入门阶段的朋友一个实用建议第一次建模型别贪大求全选一个面积几百平方公里、有连续多年实测日径流资料的流域认认真真把从DEM处理到率定验证的全流程走一遍。走通这一遍之后你对SWAT的理解、对水文过程的理解都会上一个台阶。后边不管是换研究区还是叠加泥沙和营养盐模块都是在这个框架上做增补的事。
返回列表