/parallel-computing

idw插值

Primary LanguageC++Apache License 2.0Apache-2.0

#VIC气象驱动文件生成程序 作用为VIC水文模型生成气象驱动文件(Meteorological forcing file)。 支持生成文本文件格式和二进制格式的气象驱动文件。 目前只能用IDW和泰森多边形法插值。 目前只支持输出逐日数据(具体看下面)。 支持多线程并行。

##需要的文件

  • 气象站点的坐标文件。文本格式。按顺序一行一个站点,第一列横坐标(经度),第二列纵坐标(纬度)。
  • 每个网格的坐标文件。依然一行一个网格,第一列横坐标第二列纵坐标。
  • 站点的气象数据文件。一类数据一个文件,每行为逐日数据,每列为各个站点,排列顺序同气象站点坐标文件中相同。 缺失数据用NA代替。
  • 输入文件。记录一些参数。
  • 以上文件放同一个文件夹里。

##文件内容示例

###这个是站点坐标文件

105.8333 23.4167
106.6 23.9
106.4167 23.1333
109.2333 23.75
110.0833 23.4
111.3 23.4833
112.4333 23.6333
...

###这个是网格坐标文件 嗯,跟上面的没什么区别

104.8460007 26.5531998
104.8960037 26.5531998
104.9459991 26.5531998
104.9960022 26.5531998
105.0459976 26.5531998
105.0960007 26.5531998
103.8960037 26.5032005
103.9459991 26.5032005
103.9960022 26.5032005
104.0459976 26.5032005
...

###这个是站点数据文件 例如这个:PREC.txt

0 0 0 0 0 0 0 0 0 0.2 0 0 0 0 0.1 0 0.2 0.9 2.2 0 0 0 0 0 0 0 0 0 0.1 0 1.3 0 0 0 0 0 0 0.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0
0.1 0 0 0 0 0 0 0 0 0.2 23.7 0 0 0 2.5 6.1 14.8 10.9 9.4 1.7 0 0 0 0 0 0 0.1 0 1.5 0.4 0 0.6 0 0 0 0 0 0 0 0 0 0.6 0 0 0 0 0 0 0 0 0 0 0.2 0 0.9 0.3 0 0 0 0 0 1.5 0
0.4 0 3.6 0.6 0 0 0 0 0 1.7 4.1 0.3 0 0 2.3 3.7 4.1 1 4.5 5.4 3 10.4 0.4 0.9 0 1 2.7 4.9 9.3 23.8 13.6 8.6 5.4 2 0.2 0.4 0 4.8 3.1 8.1 10.9 19.8 4.5 2.7 0.2 0 0 0 0 0 0 0 0.3 6.4 1.9 0.6 0 0 0 0 0 0 0
...

###这个是输入参数文件

# 文件路径(后面的斜杠勿忽略)
/home/hahaha/forcing/
# 站点坐标文件
stn.txt
# 栅格坐标文件
grids.txt
# 插值数据种数和各自文件名
4
PREC.txt TMIN.txt TMAX.txt WIND.txt
# 输出位置
/home/hahaha/forcing/data/data_
# 输出文件名坐标小数位数
4
# 输出文件格式,ASCII或者BINARY
ASCII
# 站点数据文件的开始时间(就是第一行的对应时间),输出的起止时间,又或者只指定从哪行开始插值以及插值行数。
1959 01 01
1980 01 01
2000 12 31
# 插值类型及相关参数,要求每个数据都要一个。
# 反距离权法为IDW,参数依次为idp,最大影响距离,最大影响点数;
# 泰森多边形法为VOR,没有参数。
IDW 2.0 1.6 5
IDW 2.0 -1 6
IDW 2.0 -1 6
VOR
IDW 2.0 -1 6

如果是二进制文件,相应部分是

# 输出文件格式,ASCII或者BINARY
BINARY
0 40
1 100
1 100
0 100

第一列表示这个量是有符号数还是无符号数,0是无符号,1是有符号; 第二列表示输出短整型时乘上的倍率。 反正跟VIC相关设定对接。

##用法 也是进入src文件夹然后make./fm inputfile。 多线程用法:./fm inputfile 8后面的8是指开的线程数,一般跟你处理器的核数相同,太大反而会拖慢速度,你懂得。