3.2 相关分析,植被生态参数变化与气象数据实例。
(1)数据收集
所需数据:20年NDVI数据(以NDVI为例,但植被生态参数是叶面积、植被覆盖度、初级生产力等等);20年气温(降水等数据,时序数据即可)。
1)年最大值NDVI数据,由GEE生产,空间分辨率250m。
2)气象数据,例如气温 (一片白,一片黑是因为最低值为-9999,可以通过SetNull解决)
(2)数据处理
1)NDVI数据处理
将其空间分辨率调整至与气象数据一致。
工具:数据管理——栅格——栅格处理——重采样
处理结果,一定要注意行列数,及其空间分辨率。
2)气象数据处理
prcp为降水,tmp为气温
裁剪:构建一个模型,掩膜提取,掩膜为处理好的NDVI数据。
并在模型属性中设置其处理范围,处理范围为处理好的NDVI数据。
提示:可以先处理一张影像,查看处理好的气象数据行列数是否和处理好的NDVI数据一致。
(3)MATLAB运行
文件夹:
1)NDVI文件:
2)气温数据文件:如果你不会在MATLAB中修改读取的文件名。
例如:
filenaname2=[Path1,'tmp_',int2str(year),'_mean.tif'];
那你就把气象数据文件名改为2000.tif,2001.tif,...,2020.tif
clc
clear
input=('E:\AAAAMODISdata\ndvi1km\B\');
input2=('E:\AAAAMODISdata\ndvi1km\Qixiang\');
output=('E:\AAAAMODISdata\ndvi1km\OUT\');
input_sample=[input,'2001.tif'];%%%随便取一张影像保存投影信息
A=('NDVI');
B=('TEMP');%%%降水还是气温
outname1=[output,A,B,'相关性.tif'];
outname2=[output,A,B,'显著性.tif'];
outname3=[output,A,B,'相关性0.05显著性检验的相关性.tif'];
[a,R]=geotiffread(input_sample);
info=geotiffinfo(input_sample);
[m,n]=size(a);
temsum=zeros(m*n,18); %%根据时间选择
ndvisum=zeros(m*n,18);%% 2000~2020 18改为21
k=1;
for year=2001:2018 %% 2000~2020
fname1=strcat(input,int2str(year),'.tif');
data1=importdata(fname1);
data1=reshape(data1,m*n,1);
temsum(:,k)=data1;
fname2=strcat(input2,int2str(year),'.tif');
data2=importdata(fname2);
data2=reshape(data2,m*n,1);
ndvisum(:,k)=data2;
k=k+1;
end
r=zeros(m,n)+nan; % 相关性
p=zeros(m,n)+nan; % 显著性
for i=1:m*n
ndvidata=ndvisum(i,:)';
temdata=temsum(i,:)';
[r1,p1]=corrcoef(temdata,ndvidata);
r(i)=r1(2);
p(i)=p1(2);
end
r0=r;
r0(p>0.05)=NaN;
geotiffwrite(outname1,r,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);
geotiffwrite(outname2,p,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);
geotiffwrite(outname3,r0,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);