|||
AMSR2卫星的背景;
如何在AMSR2官网下载AMSR2数据;
如何在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频段,但由于故障导致精度下降。
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中处理的,这里我以我下载的数据为例说明;处理的脚码中,使用了两个自定义函数: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
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 13:34
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社