利用VIC模型将气象数据日值插为小时值
搭建水文模型,最让人头疼的就是数据不全了,国内能够下载的气象站数据只有温度、相对湿度、风速和降雨,而且还全都是日值。而更为不幸的是,我最近在用的DHSVM模型需要的是小时值,而且还需要短波辐射和长波辐射数据。如何有效利用现有的气象站数据为水文模型做输入就成为我迫切要解决的问题。方法可能有很多,我这里实现了一个解决方案:利用VIC模型来进行插值转换。
题外话:按理说,VIC模型和DHSVM模型与华盛顿大学都渊源很深,可是VIC模型中有相应的插值模块,但是DHSVM中却没有。
VIC的插值算法大体是(可能我的表述不够准确):
(1)首先VIC利用每日平均气温和平均相对湿度估算出每日平均水汽压,在与每日最高温度和最低温度数据以及每日降水数据一起作为输入,使用蒙大拿大学开发的MT-CLIM模型,算出每小时短波辐射 。同时,会算出逐小时云量(后面会用到)
(2)根据上一步算出的每小时短波辐射判断出每日最高温度和最低温度时刻,建立Hermite多项式,保证在最低和最高时刻的一阶导数为0(从而保证了最低温度和最高温度与输入一致),插值得到逐小时的温度。
(3)VIC自身会通过经验公式,利用逐小时的温度和逐日的相对湿度计算逐小时的水汽压,然后利用逐小时的云量、温度和水汽压直接算出逐小时的长波辐射。
以上,是在我详细查看了VIC相关源码的基础上做的一点总结,可能不够准确。
在了解了VIC的工作原理之后,需要做的就是编写相应的接口程序来调用VIC的相应模块生成我们所需要的结果。而且,最好不要修改VIC的源码。所以,我就花了些时间,编写了一个 调用程序(源码贴在后面),没有改动VIC的源文件,只需要将我写的代码文件与VIC的源码文件一起编译即可。
它的使用方法是:
(1)有六个可选项,分别是,”temp”, “prec”, “srad”, “lrad” , “rh”, “wind” ,表示,你希望程序输出温度、降水、短波辐射、长波辐射、相对湿度或者风速。可以多选。如果要计算长波辐射、逐小时温度或者短波辐射,那么需要准备的输入数据是:逐日的降水、相对湿度、最高温度、最低温度和平均温度。如果要计算逐小时的降水,则只需要逐日的降水数据即可。实际上,此程序只会计算短波、长波和温度,其余变量只是简单的平均或填充一天。
(2)此外,用户还需要设置一些必要的参数,程序会在当前目录下寻找一个名为“parameter.txt”的文件,该文件内容如下:
其各项的含义如下,
annual_prec :年平均降水量(mm)
elevation : Site elevation, meters
slope : Site slope, degrees
aspect : Site aspect, degrees (0=N,90=E,180=S,270=W)
ehoriz :Site east horizon, degrees
whoriz :Site west horizon, degrees
StartYear :起始年
StartMonth:起始月
因此,我在案例中也将这四项全部设为0,至于这四项具体影响有多大。进过简单测试,slope的影响很大,aspect几乎没有影响。slope为0应是假定没有地形影响,以这样的数据再在DHSVM中进行全流域distibute可能会更加合理。
我编写的源码如下:
注意:一个可行的编译运行方法是,下载VIC源码,并解压,将下面的代码复制到名为“vic_invoke.c”的文本文件中,并移动到解压后的目录。Linux下,输入命令:gcc vic_invoke.c Svp.c mtclim_wrapper.c mtclim_vic.c Vicerror.c Close_files.c Nrerror.c Compress_files.c Calc_air_temperature.c Calc_longwave.c -o vic_invoke -Wall -g -I . -lm即可顺利编译,然后./vic_invoke [option]运行。
如果要在windows下运行该程序,可下载安装MinGW,然后将下面源码中的LINUX宏设置为0,然后切换目录到VIC文件夹下,输入同样的编译命令即可生成win32可执行程序。
windows下直接运行,会弹出如下界面
Continue Reading →
An IDL program for computing the threshold of SOG and EOG
这是一个用于计算生长季始期和生长季末期的IDL程序,根据的算法是《近10 年青藏高原高寒草地物候时空变化特征分析》,需要指出的是,这里没有对NDVI数据进行滤波处理。
; Author: zhb
; E-mail: zhanghongbo@itpcas.ac.cn
; Description: compute the threshold of SOG and EOG.
; Date: 2013.10.10
PRO Compute_SOG
; 填写输入参数
; FileName 是原始文件,即包含有所有年份NDVI数据的文件,波段数应是23的倍数
FileName = ‘H:\yu for test data\SGVO_SGcalibrate_snow_namco_423.tif’ ; 完整的路径名
WorkDir = ‘H:\yu for test data\’ ; 工作目录/输出目录,别忘了路径的最后要有一个斜杠
ComputeMean = 1 ; 0 表示不需要计算均值, 1 表示相反
Continue Reading →
谁动了青藏所的服务器
常年混论坛的经验告诉我们:标题要醒目
我们所有台服务器,可能所里有些同学都不知道这台服务器的存在。我一直很好奇,究竟谁在用这台服务器,所以,我每次登陆都会下意识的输入”who”,来瞅一眼,呵呵。但是不断输入who,实在是强迫症的表现,早就想写这样一个东西来达到实时监测的效果。趁着这几天没事儿,就写了个简单的脚本。
首先说下原理: Continue Reading →
A VBA script for estimating snow threshold temperature
Sub DividePrec()
Dim OriPrec As Range
Dim OutPrec01 As Range
Dim OutPrec02 As Range
Dim OutPrec03 As Range
Dim Irow As Integer
Dim vall As Integer
Dim vals As String
Set OriPrec = Range(“H3:H20548″)
Set OutPrec01 = Range(“I3:I20548″)
Set OutPrec02 = Range(“J3:J20548″)
Set OutPrec03 = Range(“K3:K20548″)
For Irow = 1 To OriPrec.Rows.Count
那些年我修改过的手机游戏
标题很2,不过实话说,我大学里所谓青春的唯一记忆可能就是这些手机游戏了,这几天突然想整理一下这些东西了,毕竟都是亲手修改的,还是很有感情的,我尽量以时间为顺序来引出一些印象深刻的游戏。
PS:介绍下背景知识,08-10年间,手机游戏基本上是被java游戏所占领,那个时候破解成风,我最早投身此道也是觉得破解很有意思,后来就越做越深,不可自拔了,课都没上过几节,整天泡在手机游戏论坛里。我老人家也自恋一下,我觉得,在当时的手游修改领域,我的作品应属上乘的,而且游戏内置修改器也可能只有我在做,我的大多数BT修改作品,尤其是修改器在当时应该是处于领先的。嘿嘿,YY无罪。
再PS:Java手机游戏的破解和BT修改不是一个难度量级,破解相对简单,尤其是后期,大概2010年左右,自动破解软件横行网络,基本上短信收费游戏全部沦陷,联网验证收费的稍难一些,BT修改的难易则依修改者的野心和游戏自身的复杂性而定。
1、时间:2008.11.15
地点:步步高手机官方论坛游戏资源区
作品:轩辕剑第二章完美修改版
记忆:第一款拿的出手的BT作品,之前都是以破解为主(我从2008年初开始担任游戏资源区的版主),记得这款当时改出来还是很受欢迎的,因为破解了拉阔的存档继承机制,我修改后的版本无需从服务器继承存档就可以拥有所有“神器”。此外还附加了经验翻倍、技能效果加强之类的修改,当时的主流是越BT越好,-_-!
链接:http://bbs.vivo.com.cn/forum.php?mod=viewthread&tid=9879 (由于论坛期间换过一次版本,帖子内容已经损坏)
A python script for extracting snow cover area from MODIS Snow production by combining both TERRA and AQUA
# Author: zhb
# Email: zhanghongbo@itpcas.ac.cn
# Task: to use Multiday Auqa and Terra modis data to extract snow cover
import arcpy
import os
from arcpy import env
from arcpy.sa import *
import arcgisscripting
import re
# mostPath: path of Terra
mostPath = “G:\MODIS\\TerraOut”
Continue Reading →
艾诺迪亚传奇4 BT修改版
魔剑镇魂曲专用修改器
从周四晚上开始(我一般只在晚上写),周六半夜完工,可能真的是老了,以前在大学的时候,连着几天写都不觉得累,现在感觉累的就剩半条命了,呵呵,不过最后的效果我还是比较满意的,在保证功能完备的同时修改器目前已经能够比较稳定的在游戏中运行(经过了大量优化修改),这个内置修改器毫无疑问是安卓平台上的第一次实现,安卓的好处就是现在做点东西就可能是第一次的(^_^)