(一)数据来源
Homepage | National Snow and Ice Data Center (nsidc.org)
想获取的数据——SMAP L3 空间分辨率0.325°(36km)中土壤湿度及质量控制的数据
(二)思路
(1)从nsidc下载py代码 通过cmd下载数据 为hdf格式
(2)利用matlb 将hdf格式转为tif输出
(三)实验步骤
1.获取数据
(1)进入官网——EXPLORE DATA

(2) 搜索——SMAP
(3)找到对应需要的数据

(4)Data Access Tool

(5)下载代码

下载得到如下的python文件(已重命名过)
(6)运行代码
注意:
(i)需要事先安装Python环境
(ii)需要事先注册nsidc账号
(iii)网络稳定

至此,数据都下载完毕了,接下来进行格式的转换
2.格式转换
说明:
(i)获取SMAP的hdf格式数据是综合的数据体,此处想从中获得的是土壤湿度数据及质量标志数据
(ii) matlab转格式需要以另一个tif文件为参考(参考坐标系等),因此需要准备一份未经处理的tif数据
clc;
clear;
%转换H5文件
%Inputpath为输入路径 注意\结尾
inputpath='D:\DataDownload\SMAP_L3_SM_P_2015_04_08\';
%outpath为tif文件输出路径
outpath='D:\DataDownload\datamovetest';
%ncList存放输入路径里Hdf格式数据的目录
ncList=dir(strcat(inputpath,'*.h5'));
%读取参考文件的地理参考的灰度值、空间参考
[A,R]=geotiffread('D:\DataDownload\dataexample\SMAP_L3_SM_P_20150331_R16020_001_Soil_Moisture_Retrieval_Data_AM_soil_moisture_3afe661f.tif');
i=geotiffinfo('D:\DataDownload\dataexample\SMAP_L3_SM_P_20150331_R16020_001_Soil_Moisture_Retrieval_Data_AM_soil_moisture_3afe661f.tif');
GeoKeyDirectoryTag=i.GeoTIFFTags.GeoKeyDirectoryTag;
GeoKeyDirectoryTag=rmfield(GeoKeyDirectoryTag,'Unknown');
for fileindex=1:length(ncList)
%读取要转格式的数据名称中的year,month,day以作新的命名用
filename=ncList(fileindex).name;
filenameDate=filename(14:21);
year=str2double(filenameDate(1:4));
month=str2double(filenameDate(5:6));
day=str2double(filenameDate(7:8));
%为了给转换格式的数据一个以日期为顺序的序号 2015年3月31日为01 以此类推 2016等则重新往后计数
%注意datanum往前写一天
doy1=datenum([year month day])-datenum([2015 03 30]);
if year==2015
doy=doy1;
elseif year==2016
doy=doy1-365;
end
%确定输入文件(待转格式),读取文件,设置转后文件的命名
inputFile=strcat(inputpath,filename);
SM_flag = h5read([inputpath,filename],'/Soil_Moisture_Retrieval_Data_PM/surface_flag_pm');
outfile1=[outpath,'\surface_flag_PM\SMAP_',filenameDate(1:8),'_',num2str(doy,'%03d'),'_PM.tif'];
%写出质量控制文件
geotiffwrite(outfile1,fliplr(rot90(SM_flag,3)),R,'GeoKeyDirectoryTag',GeoKeyDirectoryTag;
%写出土壤湿度数据
outfile2=[outpath,'\PM\SMAP_',filenameDate(1:8),'_',num2str(doy,'%03d'),'_PM.tif'];
SM_pm = h5read([inputpath,filename],'/Soil_Moisture_Retrieval_Data_PM/soil_moisture_dca_pm');
geotiffwrite(outfile2,fliplr(rot90(SM_pm,3)),R,'GeoKeyDirectoryTag',GeoKeyDirectoryTag);
%控制台打印
disp(strcat(filenameDate,'_finished'));
end
结果:
注意:
(1)关于SMAP数据的变量
这里的/Soil_Moisture_Retrieval_Data_PM/surface_flag_pm 并非一拍脑袋想出来的 具体的hdf数据文档参考官网spl3smp-v008-userguide.pdf (nsidc.org)

(2)路径和命名问题
上面代表在D:\DataDownload\datamovetest\surface_flag_PM文件里(提前建好文件夹),代码生成SMAP_20150606_45_PM.tif的数据

这一段与上面的区别在于SMAP_后面多了一个\,代表在D:\DataDownload\datamovetest\surface_flag_PM\SMAP_文件里,代码生成20150606_45_PM.tif的数据
归根到底,这是\加不加的问题,加\则是文件路径,不加\则代表文件前缀名,这一点很细节。
(3)如何输出AM数据
同理,代码把pm部分改成am,命名也相应修改。