yczhu171018的个人博客分享 http://blog.sciencenet.cn/u/yczhu171018

博文

AMSR2土壤水分产品的下载与Matlab读取

已有 10861 次阅读 2018-12-27 11:19 |个人分类:遥感数据处理|系统分类:科研笔记| amsr2, 土壤水分, matlab

本文介绍了:

  1. AMSR2卫星的背景;

  2. 如何在AMSR2官网下载AMSR2数据;

  3. 如何在Matlab中读取AMSR2的L3土壤湿度数据。

AMSR2卫星简介-机翻(参见:Global Change Observation Mission

AMSR2(高级微波扫描辐射计2)是ADEOS II上的AMSR(孔径2.0米)和NASA Aqua卫星上的AMSR-E(孔径1.6米)的改进版本。通过在1.5秒的时间内旋转圆盘天线(直径2.0米),它沿着1450千米长的弧线扫描地球表面。可靠性优于AMSR和AMSR-E。计划寿命从3年延长至5年。虽然技术创新很少,但由于校准的改进,准确性更好。

新增了微波频段,即7.3 GHz频段和89.0 GHz频段。 7.3 GHz频段用于6.925 GHz频段的复制和校准。 89.0 GHz频段用于降水和海冰密度。另一方面,消除了50.3 GHz频段和52.8 GHz频段。它们已被用于空气温度监测。在AMSR-E上安装了89.0 GHz频段,但由于故障导致精度下降。

preview

AMSR2主要的产品以及相关的观测频段

哪里可以下载AMSR2的土壤湿度数据?

日本宇航局(JAXA)负责分发AMSR2数据,他们提供从2012年7月至今的AMSR2标准产品,具体参见:Definition of Processing Levels

数据下载网址:G-PortalTop

在网站注册用户后,便可免费下载所有的产品数据。在Spacecraft端口中(见下图),可以根据你的需求搜索需要的数据,提供的搜索条件包括产品、时间和区域;也可以在提供的ftp端口中,直接下载你需要的数据(推荐这种方式,他们提供了下载的ftp软件,可以很容易批处理下载)。点击Direct download,系统会推给你一个用户手册,里面详细介绍了在网站上如何搜索、下载数据(包括如何利用ftp批量下载)。

数据下载端口

我下载了2016年的全球的AMSR2的L3土壤水分数据;每天的数据分为升轨和降轨分别存储的,每个数据4M左右,一年的数据2.85G左右,基本半天可以搞定。

下载的AMSR2土壤水分数据

如何利用Matlab读取AMSR2数据?

我的数据在Matlab中处理的,这里我以我下载的数据为例说明;处理的脚码中,使用了两个自定义函数:h5dataread_amsr2和image_combine_amsr2。h5dataread_amsr2实现单个文件的读取,image_combine_amsr2会将同一天观测的升轨和降轨数据合并为一个数据集,参见后续代码。

% 指定你的数据所存放的路径
filedir = 'H:\workfile_Papaer201709\comparison_zidongzhan_VS_fy3_171205\amsr2_2016';
% 获取所有的子文件夹filename = dir(filedir);
% 你数据的顺序(一年中的第多少个)
dateOrder = 0;
% 存放读取后的土壤水分数据(供后续分析使用)
sm_amsr2_2016 = cell(1,365);
% 存放读取后的土壤水分数据的观测时间(供后续分析使用)
date_amsr2_2016 = NaT(1,365);

for imonth=1:12
    disp(imonth)
    
    % 当月中的所有土壤湿度文件
    filedir_thisM = [filedir ,'\',filename(imonth+2).name];
    
    % 当月的所有数据文件
    filenamesA_thisM = dir([filedir_thisM,'\','*D_EQMA_*h5']);
    filenamesD_thisM = dir([filedir_thisM,'\','*D_EQMD_*h5']);
    
    fileLength = length(filenamesA_thisM);
    
    if imonth>1
        dateOrder = dateOrder+eomday(2016,imonth-1);
    end
    
    for ifile = 1:fileLength
        disp(ifile)
        FILENAME_A = filenamesA_thisM(ifile).name;
        FILENAME_D = filenamesD_thisM(ifile).name;
        
        dataA = h5dataread_amsr2(FILENAME_A);
        dataD = h5dataread_amsr2(FILENAME_D);
        
        datas = image_combine_amsr2(dataA,dataD);
        
        dateOrder2 = dateOrder+ifile;
        sm_amsr2_2016{dateOrder2} = datas;
        
        % 获取卫星数据的日期
        Idate = strfind(FILENAME_A,'GW1AM2_');
        date = FILENAME_A(Idate+7:Idate+14);
        
        date_amsr2_2016(dateOrder2) = datetime(date,'InputFormat','yyyyMMdd');
     end
end

save sm_amsr2_2016
save date_amsr2_2016

h5dataread_amsr2函数的代码:
function [datas] = h5dataread_amsr2(FILE_NAME)
%H5DATAREAD_FY3 函数读取hdf格式数据,返回读取结果
%   此处显示详细说明

file_id = H5F.open (FILE_NAME, 'H5F_ACC_RDONLY', 'H5P_DEFAULT');

DATAFIELD_NAME = 'Geophysical Data';

data_id1 = H5D.open (file_id, DATAFIELD_NAME);

%% Read the dataset.
datas = H5D.read(data_id1,'H5T_NATIVE_DOUBLE', 'H5S_ALL', 'H5S_ALL', 'H5P_DEFAULT');

% Close and release resources. 关闭文件指针
H5D.close (data_id1);
H5F.close (file_id);

%% Replace the fill value with NaN.
datas(datas<-10000) = NaN;

datas = reshape(datas,1440,720);

end

image_combine_amsr2函数的代码:
function [ out_combine ] = image_combine_amsr2( varargin )
%IMAGE_COMBINE 此处显示有关此函数的摘要
%   此处显示详细说明
    
%   获取输入变量的大小
    dim = size(varargin{1});
    % 用于放数据
    vsm_combine = zeros(dim(1),dim(2));
    % 用于计算个数(空值为非覆盖区)
    I_combine = zeros(dim(1),dim(2));
    % 用于结果数据
    out_combine = nan(dim(1),dim(2));
    
    for i = 1:nargin  % 输入变量的个数
        
        % 转换为double类型
        varargin{i} = double(varargin{i});
        
        varargin{i}(varargin{i}<-999) = nan;
        
        % 湿度数据
        varargin{i} = varargin{i}/1000;
        % 当前矩阵中的非空值
        I1 = ~isnan(varargin{i});
        
        % 把其中不是空值的部分给矩阵
        vsm_combine(I1) = vsm_combine(I1) + varargin{i}(I1);
       
        % 非空格子计数加一
        I_combine(I1) =  I_combine(I1)+1;
        
    end
    
    % 输出矩阵
    out_combine(~isnan(I_combine)) = vsm_combine(~isnan(I_combine))./ ...
        I_combine(~isnan(I_combine));
    
    out_combine = out_combine';
end




https://blog.sciencenet.cn/blog-3367669-1153783.html

上一篇:利用SNAP对哨兵一号数据(S1)进行斑点滤波、辐射定标和地理编码
下一篇:插针式土壤粗糙度仪的交互式数字化
收藏 IP: 114.247.188.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 13:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部