SMAP土壤湿度数据的下载与hdf-tif转格式

发布于:2022-10-28 ⋅ 阅读:(1363) ⋅ 点赞:(0)

(一)数据来源

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,命名也相应修改。

本文含有隐藏内容,请 开通VIP 后查看

网站公告


今日签到

点亮在社区的每一天
去签到