更正:上篇末尾关于运行汇流程序的部分,在“STEHE.stnloc”文件中需要修改的部分应改为NONE而非none。希望没有太多人因此造成困扰…


VIC的输入文件都有啥

其实VIC及其汇流程序真正的交互方式都是通过读入文件完成的。它们都要求有一个文件存储各种设定参数,包括运行的日期时间、运行模式以及所需的各种数据文件的位置。
上一篇中启动VIC的命令./vicNl -g /home/.../global_param.STEHE 实际上就是将VIC的全局参数文件的路径传递给VIC,然后VIC读入这些全局参数并执行。
VIC所需的必备输入文件有:

  • 全局参数文件 也就是stehekin示例中的 global_param.STEHE

  • 土壤参数文件 最核心的参数文件,保存每个网格的一些基本参数和各种土壤参数,包括网格编号,经纬坐标等,具体参考示例中的soil_param.STEHE。VIC就是从这里获得最基本的地理信息的。

  • 植被参数文件 存储每个网格的土地覆盖情况,示例如veg_param.STEHE

  • 植被库文件 存储每种土地覆盖类型的一些参数,比如LAI,结构阻抗,零平面位移等。示例中为veglib.LDAS拿不到相关数据的情况下可以直接拿这个文件用。(难道就是从LDAS那里拿的?)

  • 气象驱动数据文件 即meteorological forcing files(许多资料翻译作气象强迫、气象迫使,读之蛋疼,故我中二翻译为此)。存储每个网格的历时气象数据,一个网格一个文件,格式为forcing_纬度_经度
    与上边全是文本文件形式的文件不同,这个可以为文本文件和二进制文件两种不同的类型。

其他一些可选的数据输入文件有高程带文件雪线文件湖泊/湿地文件以及一些基本数据的时间序列文件等。具体看官网相关内容。


VIC的数据准备

要生成以上相应的文件,你需要先弄到以下的数据:

  • 研究区域内的多个气象站的观测数据。
    包括每个气象站的坐标以及各自的历时观测数据,精确到每日,至少包含降雨量日平均气温或者日最高/最低气温以及风速。通常这些数据记录都不是完全的,有的数据项因为各种原因会在某些日子缺数据,甚至干脆却掉某个连续时间段的记录。于是就有必要用上数据处理工具。

  • 率定用的数据。
    一些已经实际测得的VIC可输出的数据,比如某地的土壤含水量数据或者流域出口的流量数据。

  • 研究区域的地理信息数据。
    首先研究区域范围的经纬度坐标表示以及DEM数据是必须的,最好还要有流域边界的shape文件,并且这些数据都能在某平台中打开和处理,比如ArcGIS。若实在没有流域边界的图形可以干脆直接开辟一块矩形区域来研究或者用高精度DEM提取盆域好了。
    DEM可以用SRTM计划的,对于VIC的尺度90m的分辨率应该够用了。链接在这里。
    有必要提醒下,VIC和汇流程序要求的坐标都是经纬度坐标,位置、网格尺寸什么的都要用经纬度表示和计算,因此在ArcGIS里面处理数据的时候数据框得设置为地理坐标系而非投影坐标系,获得的地理数据也要进行相应变换。

  • 土壤数据。
    来源有很多,若手头没有的话可以使用HWSD,1km分辨率的土壤类型数据库,有全球和全国两个范围,可以从IIASA网站或者寒区旱区国家中心网站下载,CSDN站内也有资源。
    不过直接从其得到的资料只有土壤类型的分类,砾、砂和粘粒的比例和一些理化性质等,所以还需要通过土壤转换函数换算为VIC需要的水力参数。若手头没有资源可以参照SPAW这个软件压缩包(本站也有资源)内附带的那篇论文里边给出的公式,或者在已发的VIC相关论文里找(记得有些论文带了土壤类型对应水力参数表)

  • 土地覆盖数据(植被数据)。
    手头没数据可以用马里兰大学发布的全球1km分辨率土壤覆盖类型分布图,这是链接。点里边的Product Search -> AVHRR, Global Land Cover Product便是。

  • 各种土地覆盖类型的参数数据。也就是各种土地覆盖类型的一些动力学参数以及不同月份LAI之类。其实这个通常不用特意准备,可以直接使用stehekin这个示例自带的植被库文件veglib.LDAS,其包含了常绿针叶林、常绿阔叶林等11种土地覆盖类型参数,并且与马里兰大学的土壤覆盖分布图的类型对应。
    (马里兰的覆盖分类一共有14种,其多出来的三种分别是水面、裸地和建筑用地,裸地在VIC中没有覆盖的地方默认为裸地,而建筑用地则比例太少可以忽略)

接着再来简要说说如何用ArcGIS对研究区域进行相应的网格划分。
(以下以ArcGIS10为示例,就当作你会操作ArcGIS)首先打开ArcMap,加入流域边界图形文件,打开数据框属性将坐标系设置为地理坐标系(比如1980西安坐标系),坐标表示为十进制度。流域边界也要用数据管理工具里的投影投影到相应坐标系。

接下来如果你刚用的是dem的话就可以设定经纬度范围之后重采样到你需要的网格大小。图形文件的话,为了确保之后生成的网格能尽量覆盖流域边界,使用制图工具里的掩膜工具里的要素轮廓线掩膜将边界图形扩大一点,边距通常为需生成的网格边长的0.3~0.5倍,得到一个新的稍微变胖了的图形要素。

接下来就可以使用转换工具里的转为栅格里的面转栅格将变胖的要素类转为你所需尺寸的尽可能覆盖流域边界网格。这样获得的DEM或者流向什么的都可以捕捉这个栅格进行处理了。

接着再用转换工具里的栅格转点将栅格转换成一个网格一个点的点要素,这样栅格信息的属性表就得到了。
打开点要素的属性表,添加记录坐标的两个字段“long”和“la”(其实叫什么随便了),右键点字段名选计算几何,分别得到点的在相应坐标系下的x和y坐标(单位十进制度)。

这样就可以获得一个属性表,包含网格的编号和其中点的经纬坐标。接下来就可以将其导出成数据库或者文本文件以便用R或者matlab什么的处理了。


各种输入文件的准备

关于全局参数文件(global parameter file)

全局参数文件可以直接copy示例stehekin的或者拿源码压缩包里带的samples改成自己需要的直接用。(当然文件名和文件路径就别照搬上边的XXX.STEHE了,那个STEHE指的就是stehekin项目,完全可以自己安排一个简洁清晰高效的文件名和组织形式…)

用文本编辑器(对于一些还在用UE甚至记事本的水文水利的同学我推荐下sublime text 3这个更轻更高效的文本编辑器)打开示例的全局参数文件之后可能刚开始会被大量的内容搞晕,但是其实大部分都是#号开头的注释,内容为一些说明文字以及一些可选的参数设置。
可以通过设置代码高亮(比如Perl、R等用#注释的语言)使之看起来清晰。

官网对各种参数的解释戳这。下面是一些下垫面相关基本参数的自翻:

  • 基本参数部分
NLAYER      3   # 土壤层数,决定土壤参数文件中许多参数要弄几份
NODES       10  # 土壤热结点个数
TIME_STEP   24  # 每个时间步的长度,单位小时。如果设为24那就是逐日。
SNOW_STEP   1   # 雪模型的时间步长度。如果上一项小于24就要等于上一项。
STARTYEAR   1949    # 模型运行的开始年份
STARTMONTH  01  # 模型计算时段的开始月份
STARTDAY    01  # 开始日期
STARTHOUR   00  # 从几点钟开始...
ENDYEAR     1951    # 结束年份
ENDMONTH    12  # 结束月份
ENDDAY      31  # 结束日期FULL_ENERGY     FALSE   # 是否开启能量平衡模式,如果为FALSE就只开启水量平衡模式。
FROZEN_SOIL FALSE   # 是否开启冻土计算模式。SOIL           /home/heheda/xriver/soil.duang   # 土壤参数的路径(这路径是我瞎编的)
ARC_SOIL        FALSE   # 土壤数据是不是ArcGIS的相关格式。通常用文本文件所以是FALSE。
BASEFLOW    ARNO    # ARNO表示土壤参数文件中第5到8列为VIC标准基流参数,为 NIJSSEN2001表示此处为Nijssen的基流参数(一般默认)
JULY_TAVG_SUPPLIED  FALSE   # 是否有在土壤参数最后添加一列六月份平均气温。如果没有程序就自己计算。
ORGANIC_FRACT   FALSE   # 是否进行土壤有机质相关的计算。如果为TRUE那么土壤参数就得额外再加三种参数:每层土壤里边有机质占总的比例,每层土壤的有机质的容积密度以及土粒密度。
VEGLIB          /home/heheda/xriver/veglib.LDAS # 植被类型库文件路径
VEGPARAM        /home/heheda/xriver/veg.duang   # 土地覆盖(也就是植被覆盖)文件路径(也是我瞎编的)
ROOT_ZONES      3   # 植被的根区数目(这个决定植被覆盖文件里边需要设定的相应参数的个数)
VEGPARAM_LAI    TRUE    # 植被覆盖文件是否自带LAI信息
LAI_SRC     LAI_FROM_VEGLIB    # 参数为LAI_FROM_VEGPARAM表示从植被参数文件里边读取LAI,参数为LAI_FROM_VEGLIB则表示从植被库文件里读取LAI。
SNOW_BAND   1   # snow bands(雪线?)的个数。求大牛解释其意思...我只知道如果大于1就要准备相应的文件了。

对于气象驱动文件输入设定和数据输出部分详见下面相关内容。

关于气象驱动文件(Meteorological Forcing FIle)

气象驱动文件的数据类别比较自由,可以在VIC提供的一个列表里选取可以提供的数据类别。
写此文时此链接markdown表格格式挂了故帖上一些过来:

气象
数据类别 是啥 描述
AIR_TEMP 平均气温 C (ALMA单位: K)
CATM 二氧化碳浓度 ppm
PREC 降水量(包括降雨、降雪) mm (ALMA单位: mm/s)
DENSITY 空气密度 kg/m3
LONGWAVE 入射长波辐射量 W/m2
PREC 总降水量(包括降雨和降雪) mm (ALMA单位: mm/s)
QAIR 比湿度 kg/kg
REL_HUMID 相对湿度 分数
SHORTWAVE 入射短波辐射量 W/m2
SNOWF 降雪量 mm (ALMA单位: mm/s)
TMAX 时段内最高气温 C (ALMA单位: K)
TMIN 时段内最低气温 C (ALMA单位: K)
TSKC 云量 分数
VP 水汽压 kPa (ALMA单位: Pa)
WIND 风速 m/s
WIND_E 风速在正东方向的分量 m/s
WIND_N 风速在正北方向的分量 m/s
植被
ALBEDO 地面反照率 分数
LAI_IN 叶面积指数 分数
VEGCOVER 植被覆盖率 分数
其他
SKIP 留出位置待将来放其他数据

其中降雨量PREC平均气温AIR_TEMP或者日最高、最低气温TMAX和TMIN以及风速WIND三样为必选项。具体选啥还主要看手头上的气象数据有啥及其质量如何。

气象驱动数据输入文件形式为一个网格一个文件,全部放在同一个目录下,文件名格式示例data_12.3456_123.4560,前缀data_可以更改,但是经纬度后缀格式应按照示例,先纬度后经度,小数点后保留某位小数。
气象驱动数据的输入文件支持两种格式,文本文件(ASCII)格式和二进制文件(binary)格式,提供后者是为了优化数据的读取性能。

文本文件格式的气象驱动数据

如果研究规模比较小,对性能没有太大纠结的时候通常用比较方便的文本文件格式。其在全局参数文件中相应位置设置如下:

FORCING1    /home/hehehe/yriver/data_   # 气象驱动数据的路径格式。
N_TYPES     4   # 包含的气象数据类别数。
FORCE_TYPE  PREC    # 气象数据类别:降水量
FORCE_TYPE  TMAX    # 气象数据类别:最高气温
FORCE_TYPE  TMIN    # 气象数据类别:最低气温
FORCE_TYPE  WIND    # 气象数据类别:风速
FORCE_FORMAT    ASCII   # 输入文件格式:文本文件
FORCE_DT    24  # 数据时间步长度
FORCEYEAR   1950    # 数据记录的开始年份
FORCEMONTH  1   # 数据记录的开始月份
FORCEDAY    1   # 数据记录的开始日期
FORCEHOUR   0   # 数据记录的开始时间
GRID_DECIMAL    4   # 输入文件的经纬度小数点后保留几位小数。
WIND_H          10.0    # 测得风速的高度(m)。
MEASURE_H       2.0     # 测得湿度的高度(m)。
ALMA_INPUT  FALSE   # 数据是否使用ALMA单位制。

输入文件的格式也很简单,每一列是一种数据类别,从左到右按全局参数文件里设定的顺序;每一行则是逐时间步的数据,形式如:

0.000 -10.00 -2.00 2.00
0.000 -8.50 -1.10 2.00
5.000 -7.90 0.10 2.00
10.000 -8.20 -3.10 2.00
...

二进制格式的气象驱动数据

从某种意义上讲,二进制文件不同于文本文件有逐行之分,而是连续的一串0和1组成的数据流(其实文本文件也是一串连续的数据流,只不过其中有换行符将其分割而已),解析方式要靠相关程序。因此二进制格式的输入文件有相应规定:每个数据统一转换成短整形补码(长度两个字节)的形式,按顺序存放逐日的每日内的各种数据类别数据,读入时再除以相应倍数。全局参数文件设定如下:

FORCING1    /home/hehehe/yriver/data_   # 同上是气象驱动数据的路径格式
N_TYPES     4   # 数据类别种数
FORCE_TYPE  PREC    UNSIGNED    40  # 依次为数据类别,有符号还是无符号短整形,要除以的倍数。
FORCE_TYPE  TMAX    SIGNED      100
FORCE_TYPE  TMIN    SIGNED      100
FORCE_TYPE  WIND    SIGNED      100
FORCE_FORMAT    BINARY  # 数据格式为二进制。
FORCE_ENDIAN    LITTLE  # 字节存放方式为小端法。
FORCE_DT    24  # 从这往下同文本文件格式设置。
FORCEYEAR   1950
FORCEMONTH  1
FORCEDAY    1
FORCEHOUR   0

具体解释如下:
首先取stehekin的某个气象驱动文件,用高级点的编辑器打开后是这样子的

a200 6dfe fbfa c101 0000 1cfe 4bf7 0a01
0000 f6f9 72f7 4000 0000 e1f9 8ef8 c900
1200 5dfb 2ef9 bc00 ca00 0300 06fb 3501
...

这是用16进制形式表现出来的的二进制文件,一个字节由两位16进制数表示,因此以上每4位数即为一个短整形的数据。
按照全局参数设定,第一个数据类别降雨量为无符号整形,其余三个为有符号整形,第一行第一个数字a200为小端法存储的无符号短整形补码表示的整数162,除以降雨量设定的倍数40即为40.5,这便是此网格第一天的降水量数据。同理接下来的三个数字6dfefbfac101则是分别用小端法有符号短整形补码表示的整数-403、-1285以及449,除以相应倍数100即为第一天的日最高气温-4.03,日最低气温-12.85以及风速4.49。接下来的数据即先后为第二天的降水、气温和风速数据,解析同上。

由于文本文件中的数据并不是计算机中真正的数字,而是一串字符序列。相比起直接按计算机存储数字的方式直接读入数据,读入文本数据要经过一系列较为复杂的扫描和转化过程,当数据量大的时候会牺牲掉相当的一部分性能。设置二进制文件格式的意义即在于此。
关于二进制补码表示数字和大端、小端法相关内容可查阅《深入理解计算机系统》中2.2节。

至于如何将离散的气象站点的数据转换成一个网格一套的连续数据当然就是用插值了。
鉴于克里格插值实在复杂难以应对长时间序列的数据,用的最多的还是简单粗暴的IDW法。
如果你使用R的话可以用地统计相关的sp包gstat包,带有克里格法和IDW法函数,输入文件的生成可借此通过编写输入站点坐标和气象参数序列以及网格点坐标列表的R程序实现。IDW法由于原理简单也完全可以写个C程序来完成(如果嫌R慢的话)。

关于土壤参数文件(soil parameter file)

土壤参数文件之所以是VIC最核心的输入文件是因为其还记录了网格设定的情况,VIC是先从其取得网格编号和坐标再以此为依据读取其他数据的。
形式为一个标准的二维关系表,每一列是一种参数,每一行是一个网格的参数,可以带用#号注释的表头。非常适合用R里的数据框计算。
具体样子如下:

#RUN    GRID    LAT LNG INFILT  Ds  Ds_MAX  Ws  C   EXPT_1  EXPT_2  EXPT_3  Ksat_1  Ksat_2  Ksat_3  PHI_1   PHI_2   PHI_3   MOIST_1 MOIST_2 MOIST_3 ELEV    DEPTH_1 DEPTH_2 DEPTH_3 AVG_T   DP  BUBLE1  BUBLE2  BUBLE3  QUARZ1  QUARZ2  QUARZ3  BULKDN1 BULKDN2 BULKDN3 PARTDN1 PARTDN2 PARTDN3 OFF_GMT WcrFT1  WcrFT2  WcrFT3  WpFT1   WpFT2   WpFT3   Z0_SOIL Z0_SNOW PRCP    RESM1   RESM2   RESM3   FS_ACTV JULY_TAVG
1 86340 48.3125 -120.5625 0.3000 0.1000 10.0000 0.7000 2 12.6760 12.6760 12.6760 1257.0959 1257.0959 1257.0959 -99 -99 -99 15.4420 46.3270 154.4250 1668.1500 0.1000 0.3000 1.5000 0.3025 4.0000 14.6600 14.6600 14.6600 0.6930 0.6930 0.6930 1569.1000 1569.1000 1569.1000 2619.1001 2619.1001 2619.1001 -8 0.3120 0.3120 0.3120 0.1840 0.1840 0.1840 0.0100 0.0300 1318.5100 0 0 0 0 11.8519
1 86804 48.4375 -120.5625 0.3000 0.1000 10.0000 0.7000 2 12.6760 12.6760 12.6760 1257.0959 1257.0959 1257.0959 -99 -99 -99 15.4420 46.3270 154.4250 1698.7900 0.1000 0.3000 1.5000 -0.0207 4.0000 14.6600 14.6600 14.6600 0.6930 0.6930 0.6930 1569.1000 1569.1000 1569.1000 2619.1001 2619.1001 2619.1001 -8 0.3120 0.3120 0.3120 0.1840 0.1840 0.1840 0.0100 0.0300 1470.3500 0 0 0 0 11.7472
...

其所需及可选参数看这里。参数列摆放位置应按照其规定顺序。注意许多参数是每层土壤各一个的。其中红色字体的参数项标示开启能量平衡模式才会使用,紫色字体表示开启冻土模式才会使用,但是开不开也要占个位…

这些参数大体上可以分为这么几类:

  1. 可以直接获得的。

    • run_cell 是否运行这个网格,为1则运行0则不运行。
    • gridcel 网格编号。
    • lat 网格中点的纬度。
    • elev 网格高程,单位m。可以拿DEM重采样。
    • bulk_density 土壤容积密度。通常HWSD或者其他土壤数据都会带这个。
    • off_gmt 离格林威治时区的时区数。也就是经度乘以24除以360。
    • annual_prec 多年平均降雨量。可以直接拿气象数据计算再插值。
    • fs_active 是否对这个网格开启冻土模式。如果全局参数文件没开则这列酱油。
    • July_Tavg 六月份平均气温。如果你在全局参数文件里相应位置有设置就要加上这一列了。
  2. 要经过转换的。主要是土壤水力参数,这里列举了可以将HWSD记录的土壤数据用SPAW的公式计算出来的。

    • expt 某个水力系数,用于Campbell方程,值为 3+2λ 3 + \dfrac{2}{λ} 并应不小于3。具体查看SPAW中附带的论文。
    • Ksat 饱和导水率,单位mm/day。
    • bubble 貌似是土壤吸气压力。冻土模式需要。
    • Wcr_FRACT 田间持水量,约等于饱和含水量的七成。
    • Wpwp_FRACT 凋萎含水率。
      以上参数是每层土壤都要一份。
  3. 一般不好弄到但是有得参考的。

    • c 基流曲线方程的指数,通常设为2。
    • phi_s 土壤水扩散系数。可设为缺省值-99。
    • init_moist 土壤初始含水量。通常都只会随便设置成一个不大的值,并设置个一两年作为启动期,让头两年汛期的大雨让土壤水饱和掉,往后的时间才拿来率定、使用。
    • avg_T 土壤平均气温。热量平衡模式需要。有需要但弄不到的话拿官网全球数据集里的来插值凑合吧…
    • dp 土壤热阻尼深度,大概为4m。热量平衡模式需要。
    • quartz 土壤石英含量。热量平衡模式需要。搞法同avg_T。
    • soil_density 土粒密度,也就是土粒比重乘水的密度,单位kg/m³。官方推荐2685kg/m³。
    • rough 裸地的地面粗糙度。可以参考stehekin取值。
    • snow_rough 雪地的地面粗糙度。同上。
    • resi_moist 土壤经过排水蒸发后的剩余含水量。同上。
    • depth 每层土壤厚度,单位m,其中第一层土壤厚度通常为0.1m。
      以上除了 avg_T、dp、rough、和snow_routh,其他都是每层土壤都要一份。
  4. 需要率定的参数。一开始没有完全准确的值,需要在一个范围内率定直到得到最优值。

    • infilt 可变下渗曲线方程的幂,通常为0.2~0.6。
    • Ds 非线性基流发生时流速占基流最大流速Dsmax的比例。
    • Dsmax 基流最大流速,单位mm/day。
    • Ws 非线性基流发生时土壤含水率占饱和含水率的比例。
    • depth 除第一层以外的其他层土壤厚度,单位m。

关于植被参数文件(vegetation parameter file)

植被参数文件的格式比较纠结,长这个样子:

86804 51 0.648889 0.10 0.05 1.00 0.45 5.00 0.50 4.895 4.895 4.895 4.895 4.895 4.895 4.895 4.895 4.895 4.895 4.895 4.895 5 0.071111 0.10 0.05 1.00 0.45 5.00 0.50 0.138 0.150 0.162 0.338 1.487 4.425 5.625 5.850 4.588 1.662 0.288 0.225 6 0.124444 0.10 0.10 1.00 0.65 1.00 0.25 0.125 0.138 0.200 0.562 1.688 3.550 4.188 3.825 3.012 1.975 0.562 0.213 7 0.102222 0.10 0.10 1.00 0.65 1.00 0.25 0.225 0.287 0.275 0.275 0.675 2.537 3.463 3.212 1.350 0.337 0.250 0.237 8 0.017778 0.10 0.10 1.00 0.65 0.50 0.25 0.363 0.462 0.600 0.600 0.600 0.600 1.125 1.075 0.638 0.363 0.363 0.363
85875 41 0.674107 0.10 0.05 1.00 0.45 5.00 0.50 4.911 4.911 4.911 4.911 4.911 4.911 4.911 4.911 4.911 4.911 4.911 4.911 5 0.111607 0.10 0.05 1.00 0.45 5.00 0.50 0.200 0.213 0.250 0.587 1.850 4.575 5.513 5.787 4.600 1.725 0.400 0.312 6 0.178571 0.10 0.10 1.00 0.65 1.00 0.25 0.188 0.238 0.438 0.812 1.675 3.288 3.963 3.825 3.112 2.037 0.650 0.425 7 0.035714 0.10 0.10 1.00 0.65 1.00 0.25 0.225 0.287 0.275 0.275 0.675 2.537 3.463 3.212 1.350 0.337 0.250 0.237
...

以上每一段记录一个网格的植被覆盖信息,然后每一段内的情况为:
第一行分别是网格编号和该网格内有多少种植被;
往下则是记录这么多种植被覆盖各自的信息,依次分别是登记在植被库文件中的植被类型编号,这种植被覆盖面积占网格总面积的比例,以及N层根区各自的深度和N层根区中各层根占根区的比例(这个N在全局参数文件中相应位置定义)。
如果全局参数文件中VEGPARAM_LAI设置为TRUE那么也要如上每种植被覆盖类型再加一行一年12个月的LAI值。
具体信息看官网相应页面。

关于植被库文件

由于植被库文件通常可直接拿stehekin的veglib.LDAS用,所以这里只是简单解释下此文件的架构。
文件原文:

#Class  OvrStry Rarc    Rmin    JAN-LAI FEB-LAI MAR-LAI APR-LAI MAY-LAI JUN-LAI JUL-LAI AUG-LAI SEP-LAI OCT-LAI NOV-LAI DEC-LAI JAN-ALB FEB_ALB MAR-ALB APR-ALB MAY-ALB JUN-ALB JUL-ALB AUG-ALB SEP-ALB OCT-ALB NOV-ALB DEC-ALB JAN-ROU FEB-ROU MAR-ROU APR-ROU MAY-ROU JUN-ROU JUL-ROU AUG-ROU SEP-ROU OCT-ROU NOV-ROU DEC-ROU JAN-DIS FEB-DIS MAR-DIS APR-DIS MAY-DIS JUN-DIS JUL-DIS AUG-DIS SEP-DIS OCT-DIS NOV-DIS DEC-DIS WIND_H  RGL SolAtn  WndAtn  Trunk   COMMENT
1   1   60.0    150.    3.400   3.400   3.500   3.700   4.000   4.400   4.400   4.300   4.200   3.700   3.500   3.400   0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    50.0    30  0.5 0.5 0.2 Evergreen Needleleaf
2   1   60.0    150.    3.400   3.400   3.500   3.700   4.000   4.400   4.400   4.300   4.200   3.700   3.500   3.400   0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    0.12    1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   1.476   8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    8.04    50.0    30  0.5 0.5 0.2 Evergreen Broadleaf
3   1   60.0    150.    1.680   1.520   1.680   2.900   4.900   5.000   5.000   4.600   3.440   3.040   2.160   2.000   0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    50.0    30  0.5 0.5 0.2 Deciduous Needleleaf
4   1   60.0    150.    1.680   1.520   1.680   2.900   4.900   5.000   5.000   4.600   3.440   3.040   2.160   2.000   0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    50.0    30  0.5 0.5 0.2 Deciduous Broadleaf
5   1   60.0    140.    1.680   1.520   1.680   2.900   4.900   5.000   5.000   4.600   3.440   3.040   2.160   2.000   0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    50.0    50  0.5 0.5 0.2 Mixed Cover
6   1   60.0    125.    1.680   1.520   1.680   2.900   4.900   5.000   5.000   4.600   3.440   3.040   2.160   2.000   0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    0.18    1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   1.230   6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    6.70    50.0    50  0.5 0.5 0.2 Woodland
7   0   40.0    125.    2.000   2.250   2.950   3.850   3.750   3.500   3.550   3.200   3.300   2.850   2.600   2.200   0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    5   75. 0.5 0.5 0.2 Wooded Grasslands
8   0   50.0    135.    2.000   2.250   2.950   3.850   3.750   3.500   3.550   3.200   3.300   2.850   2.600   2.200   0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    5   75. 0.5 0.5 0.2 Closed Shrublands
9   0   50.0    135.    2.000   2.250   2.950   3.850   3.750   3.500   3.550   3.200   3.300   2.850   2.600   2.200   0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.19    0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   0.495   1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    1.00    5   75. 0.5 0.5 0.2 Open Shrublands
10  0   25.0    50. 2.000   2.250   2.950   3.850   3.750   3.500   3.550   3.200   3.300   2.850   2.600   2.200   0.20    0.20    0.20    0.20    0.20    0.20    0.20    0.20    0.20    0.20    0.20    0.20    0.0738  0.0738  0.0738  0.0738  0.0738  0.0738  0.0738  0.0738  0.0738  0.0738  0.0738  0.0738  0.402   0.402   0.402   0.402   0.402   0.402   0.402   0.402   0.402   0.402   0.402   0.402   3   100 0.5 0.5 0.2 Grasslands
11  0   25.0    60. 0.500   0.500   0.500   0.500   1.500   3.0000  4.500   5.0000  2.5000  0.500   0.500   0.500   0.10    0.10    0.10    0.10    0.20    0.20    0.20    0.20    0.20    0.10    0.10    0.10    0.006   0.006   0.006   0.006   0.012   0.062   0.123   0.185   0.215   0.215   0.006   0.006   0.034   0.034   0.034   0.034   0.067   0.335   0.670   1.005   1.173   1.173   0.034   0.034   2   100 0.5 0.5 0.2 Crop land (corn)

也是个标准的二维关系表形式,第一列为植被覆盖类型的注册编号,第二列为是否有树冠,然后往后的都是参数…最后一列是注释,告诉你这到底是啥植被类型。
相应参数解释移步这里。

关于输出文件的格式

全局参数文件中的相关设定如下:

#######################################################################
# Output Files and Parameters
#######################################################################
RESULT_DIR      /home/hehehe/yriver/output # 输出文件路径
OUT_STEP        0       # 输出数据的时间步(小时),为0则使用默认时间步长度。
SKIPYEAR    0   # 输出时开头跳过多少年。
COMPRESS    FALSE   # 是否压缩输出文件。
ALMA_OUTPUT FALSE   # 是否以ALMA单位制输出文件。
BINARY_OUTPUT   FALSE   # 是否输出二进制文件。
MOISTFRACT  FALSE   # 输出的土壤含水量是否使用体积比例,为否则使用VIC标准。
PRT_HEADER  FALSE   # 是否加上#号注释的元信息和表头。
PRT_SNOW_BAND   FALSE   # 是否输出snow band的输出文件...

以上设定按照VIC默认情况进行输出:输出fluxes和snow两类文件,如果开启了冻土模式则输出fdepth文件,具体看这里。形式同气象驱动文件,也是一个网格一个文件,文件名包含网格经纬坐标,文件内容每列为数据类别,逐行为历时数据。

这是VIC支持的输出数据类别列表

VIC支持自定义输出的数据类型和方式。想自定义输出就要在全局参数文件里再加上设定内容,以下是示例。

N_OUTFILES  2   # 输出多少种输出文件OUTFILE douniwan    2   # 依次是输出文件的前缀,文件使用的数据类别数。
OUTVAR  OUT_RUNOFF  # 输出数据类别定义1
OUTVAR  OUT_BASEFLOW # 输出数据类别定义2OUTFILE hehehe  3   # 第二个种文件的定义
OUTVAR  OUT_EVAP    # 输出数据类别定义1
OUTVAR  OUT_EVAP_BARE # 输出数据类别定义2
OUTVAR  OUT_EVAP_CANOP  %.4f    # 输出数据类别定义3。后面那个是输出文本文件的可选参数,为输出数据的格式,形式与C语言printf函数用的一样。示例中为保留4位小数的浮点型格式,又如%.7e则是保留7位有效数字的科学计数法格式。

如果输出的是二进制文件,则输出数据类别定义后面的可选参数有数据类型和乘上后再输出的倍率两者,形式和二进制的气象驱动数据输入文件一致。
数据类型有如下:

OUT_TYPE_DOUBLE # 双精度浮点型
OUT_TYPE_FLOAT  # 单精度浮点型
OUT_TYPE_INT    # 整型
OUT_TYPE_USINT  # 无符号整型
OUT_TYPE_SINT   # 短整型
OUT_TYPE_CHAR   # 单字节字符型
*               # 使用默认类型

VIC水文模型入门攻略(中)VIC的数据和输入文件准备相关推荐

  1. VIC水文模型入门攻略(上) 将VIC跑起来

    本科水利狗一枚,正在跟老师做水利信息化方面的项目,VIC是玩的第一个水文模型,边啃官方文档边学其他周边东西边不断鼓捣解决问题终于成功使用. 仅面对于需要使用VIC但是不怎么了解计算机的广大水文水利研究 ...

  2. VIC水文模型入门攻略(下) 汇流和其他相关

    汇流程序的数据准备 前面说过VIC作为分布式水文模型,其功能只有计算产流量而无法给出汇流量,于是要进行汇流操作得用Dag Lohmann研发的一个汇流模型程序进行,其名为Routing,编程语言为Fo ...

  3. VIC水文模型在windows环境下运行

    本人运行的是06年VIC程序,程序中使用了g77编译Fortran77的代码,而g77在新版的Cygwin已经弃用,安装不了g77.所以要下载旧版Cygwin进行离线安装,就可以安装上所需要的g77了 ...

  4. python多元非线性回归模型_Python中多维数据样本的非线性回归

    试试像这样的 编辑:添加了一个使用线性回归结果估计输出的示例函数.import numpy as np data =np.array( [[-0.042780748663101636, -0.0040 ...

  5. C语言循环水题,科学网—水文模型大本营 - 陈昌春的博文

    水文模型在气候变化与水资源问题日益引起关注的当代具有丰富的应用前景.现对水文模型作一些介绍. 目前堪称水文模型龙头老大的开放兼开源软件是SWAT(行业老大的SHE水文模型集群是商业软件,与ARCGIS ...

  6. 大尺度分布式水文模型VIC模型原理与应用

    VIC(Variable Infiltration Capacity)模型是由Washington大学.California大学Berkely分校以及Princeton大学的研究者基于Wood等人的思 ...

  7. 水文模型有哪些?SWAT模型、VIC模型、HEC模型、HSPF模型、HYPE模型、SWMM模型、FVCOM模型、Delft3D模型等应用

    目录 ㈠ 从小白到精通SWAT模型学习建模方法.实例应用.高级进阶 ㈡ R+VIC模型融合实践技术应用及未来气候变化模型预测 ㈢ HEC-RAS一维.二维建模方法及实践技术应用 ㈣ HEC-HMS水文 ...

  8. lstm原文_LSTM模型与水文模型在径流模拟中的比较

    学术简报 题目:Comparison of Long Short Term Memory Networks and the Hydrological Model in Runoff Simulatio ...

  9. Noah-MP模型 陆面生态水文模拟与多源遥感数据同化

    陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用:熟悉模型的发展历程,常见模型及各自特点:理解Noah-MP模型的原理,掌握Noah-MP模型在单站和区域的模拟.模拟结果的输出和后续分析 ...

最新文章

  1. AI公开课:19.04.18俞益洲—深睿医疗CS《计算机视觉的应用与落地》课堂笔记以及个人感悟
  2. 主席树学习小结(POJ 2104)
  3. LiteOS调测利器:backtrace函数原理知多少
  4. day1 -- Python变量、注释、格式化输出字符串、input、if、while、for
  5. python课程价格-python辅导价格是多少?主要流程是什么?
  6. 有人问你后端面试考哪些?把这篇扔给他!
  7. html5 邮编,美国9位详细邮编(United States ZIP Codes 5 Plus 4)的网站
  8. 中国信息导航网贤士招募令
  9. 使用jQuery Mobile和Phone Gap开发Android应用程序
  10. svn设置文件提交过滤
  11. sap采购申请自动转采购订单_我的SAP运维日常_0021_MM_计划订单转采购申请时绑定凭证类型...
  12. php 上传 413,PHP CURL上传文件出现413 Request Entity Too Large
  13. rhel8安装docker-ce
  14. Socks代理是什么意思
  15. 笔记本 i3 i5 i7 区别
  16. 你见过这么细的图书管理系统吗?
  17. Apache DolphinScheduler 开源之夏学生项目申请开启,6 大课题等你来拿万元奖金!
  18. 《数字图像处理》冈萨雷斯matlab函数statmoments、计算均值和n阶中心矩,并返回行向量
  19. 醒醒吧,月入3000的年轻人,你已经没救了
  20. 贪吃蛇游戏设计准备(实验准备)

热门文章

  1. 10套极好用的PS笔刷工具,简直就是神器
  2. 阿里datav自定义组件 管道插件
  3. 这是一份非常实在的淘宝运营学习宝典
  4. Python Spark WordCount
  5. python列表对应元素相乘_关于python:如何对两个列表进行元素明智的相乘?
  6. Java项目:springboot园区管理系统
  7. Nwafu-OJ-1437 Problem h C语言实习题六——6.进制转换函数设计
  8. Python 爬虫实战入门——爬取汽车之家网站促销优惠与经销商信息
  9. Windows电脑桌面透明云便签怎么自定义设置便签快捷键?
  10. 计算机开启时提示键盘错误,键盘错乱,教您笔记本电脑键盘错乱的解决方法