基于IDL平台的植被物候影响因子计算程序
2021-07-29司国新周尧治
司国新,周尧治
(1.西藏农牧学院高原生态研究所,西藏 林芝 860000 ;2.西藏高原森林生态教育部重点实验室,西藏 林芝 860000;3.西藏林芝高山森林生态系统国家野外科学观测研究站,西藏 林芝 860000;4.西藏自治区生态安全联合实验室,西藏 林芝 860000)
1 引言
植被物候是与大气界面能量交换、全球物质循环、植被生产力等密切相关的关键参数[1,2]。植被物候的影响因子研究更是物候研究中的一个热点。已有研究表明,月平均温度、年均温、生物温度、温暖指数、寒冷指数和大陆度指数等是植被物候的重要影响因子[3~5]。
由于获取这些指标的数据源体量庞大,依靠人工运算较为繁琐,并不适用于大范围的物候研究。因此需要更为准确和高效的运算方法。IDL平台大数据的处理能力强,有良好的可视化界面,是非常方便的程序设计平台[6]。
为了简化植被物候影响因子运算处理过程,计划基于1951~2018年的气象数据和IDL平台编写批量处理植被物候影响因子的代码。
2 数据与方法
2.1 数据
本文使用的气象数据均来自于中国气象数据网(http://data.cma.cn/)的V3数据集。所有数据均以txt格式按年份存储。
2.2 基本思路
研究的大多数植被物候影响因子均与各月的平均温度相关。所以,算法的第一步应当是计算各站点每个月的平均温度。然后加入温度阈值以计算生物温度、温暖指数和寒冷指数,加入经纬度信息以计算大陆度指数。整个代码应当采用环境设置、文件输入、文件循环、指标计算、数据输出等几个模块的架构。
3 代码实现
由于代码中需要大量调用ENVI的数学函数,所以应当在代码首段加入“compile_optidl2”语句,以确保稳定调用。使用read_ascii函数从txt文件读入数据源,并以结构体的形式存储在mete_para变量中。由于气象数据是按照年份的顺序存储的,必须要设置一个循环才能从大量文件中提出植被物候影响因子。事先设置了用于存放最终结果的outsum变量。对于每一个指标,都需要借助where函数从mete_para变量中筛选符合条件的原始数据,然后计算并传给outsum变量。最后调用WRITE_CSV函数以csv文件的形式输出计算结果。由于篇幅原因,下面只给出计算各个指标的核心代码:
fori=0,sizestation[1]-1dobegin
outsum[0,hang+i]=kustationall[0,i]
outsum[1,hang+i]=data[4,0]
forj=1,12dobegin
outsum[j+1,hang+i]=mean(mete[where((mete.stationeqkustationall[0,i])and(mete.temlt30000)and(mete.montheqj))].tem)
endfor
;计算每个月的平均温度
outsum[17,hang+i]=mean(mete[where((mete.stationeqkustationall[0,i])and(mete.temlt30000))].tem)
;年均温
fork=2,13dobegin
if(outsum[k,hang+i]gt0)and(outsum[k,hang+i]le300)thenbegin
outsum[18,hang+i]=outsum[18,hang+i]+outsum[k,hang+i]
endifelseif(outsum[k,hang+i]gt300)thenbegin
outsum[18,hang+i]=outsum[18,hang+i]
endifelsebegin
outsum[18,hang+i]=outsum[18,hang+i]
endelse
endfor
outsum[18,hang+i]=outsum[18,hang+i]/12
;生物温度
fork=2,13dobegin
if(outsum[k,hang+i]GE50)thenbegin
outsum[19,hang+i]=outsum[19,hang+i]+outsum[k,hang+i]-50
endifelseif(outsum[k,hang+i]lt50)thenbegin
outsum[20,hang+i]=outsum[20,hang+i]+50-outsum[k,hang+i]
endif
endfor
;温暖指数和寒冷指数
form=2,21dobegin
outsum[m,hang+i]=outsum[m,hang+i]/10
endfor
;转化为正常单位
outsum[21,hang+i]=1.7×outsum[16,hang+i]/sin(kustationall[1,i]×PI/180)-20.4
;计算大陆度指数
Endfor
为了验证代码的有效性,挑取青海省班玛气象站的原始气象数据,手动计算了其5条植被物候影响因子。又用代码计算了这几个指标,对比如表1。结果显示,代码计算准确。
表1 班玛气象站2018年植被物候影响因子
4 讨论与结论
植被物候研究需要使用大量气象因子指标,这些指标大多不易计算。所以基于IDL平台设计了物候影响因子的驱动程序。结果显示:代码运算准确高效。