其他
GIMMS NDVI数据处理-nc格式转tif
从数据下载网站上下载一期数据(任意一个nc文件),查看其信息:
ncdisp('C:\Users\nc2tif\ndvi3g_geo_v1_1981_0712.nc4');
首先通过以下转换得到一个文本格式的样例数据:
data1=ncread('C:\Users\nc2tif\ndvi3g_geo_v1_1981_0712.nc4','ndvi');
data2=data1(:,:,1);
data3=rot90(data2);
data4=flipud(data3);
data5=double(data4)/10000;
data5(data5<-0.3|data5>1)=-999;
dlmwrite('样例.txt',data5,'\t',1,1);
样例.txt:然后在文本中添加经纬度信息,结果如下所示:
添加经纬度信息后,采用以下步骤得到样例栅格数据:
1. 利用arcgis的ASCII码转raster功能,将该文本转变为tif栅格文件;
2. 对样例文件定义投影。
(以上是针对GIMMS ndvi全球数据的样例制作,可后台回复“样例”直接获取一个样例文件,不过建议自己尝试处理)
[~,R]=geotiffread('J:\全球性数据集\NDVI3g\example.tif');
info=geotiffinfo('J:\全球性数据集\NDVI3g\example.tif');
i=1;
k=[1:12];
m=1;
year=[1982 1982 1983 1983 1984 1984 1985 1985 1986 1986 1987 1987 1988 1988 1989 1989 1990 1990 1991 1991 1992 1992 1993 1993 1994 1994 1995 1995 1996 1996 1997 1997 1998 1998 1999 1999 2000 2000 2001 2001 2002 2002 2003 2003 2004 2004 2005 2005 2006 2006 2007 2007 2008 2008 2009 2009 2010 2010 2011 2011 2012 2012 2013 2013 2014 2014 2015 2015
];
format='monthNDVI3g.tif';
montha=[1:6];
monthb=[7:12];
e=dir(fullfile('J:\全球性数据集\NDVI3g','*nc4'));
while i<=length(e)
a=ncread(e(i).name,'ndvi');
while m<=length(k)
j= m+1;
h=j/2;
b1=max(a(:,:,k(j)),a(:,:,k(m)));
b=flipud(rot90(b1));
m=m+2;
if mod(i,2)==0
g=monthb;
else
g=montha;
end
name1=strcat(int2str(year(i)),int2str(g(h)),format);
geotiffwrite(name1,b,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);
end
m=m-12;
i=i+1;
end
以上过程批量将nc格式的数据转换成了旬尺度tif栅格,但NDVI值还存在一个比例变换(除以10000),另外还需月最大值合成,背景剔除,负值归零。