|||
2014-7-31;Thursday;Sunny
由于SMOS数据格式的特殊性,对SMOS数据的读取需要借助专业的软件或者自行写数据读写代码,先来介绍两款SMOS数据的读取和显示软件(免费的):
1. BeamVISAT软件
下载可以通过下面两个链接下载,第一个是下载主软件,注意这里需要下载4.11版本,因为第二个链接的SMOS+Toolbox插件是针对4.11版本的,依次下载并进行安装:
http://www.brockmann-consult.de/cms/web/beam/releases
http://www.brockmann-consult.de/beam-wiki/display/SBOX/SMOS+Toolbox+for+BEAM
这里的SMOS+Toolbox比较简单,只有四个按键,在软件中直接点帮助文档即可,至于Beam软件的教程,可以在其官网上学习:
http://www.brockmann-consult.de/cms/web/beam/
2. SMOSViewer
这款软件读数据比前一款更为方便,对数据结构的显示也比较明了,将数据的头文件,数据块的各个部分都用类似于文件夹的形式进行了显示。软件下载方式如下:
http://smos.comNaN/project_tools_visualization.html
软件的教程如下:
http://smos.comNaN/downloads/release_sdv/sum_sdv.pdf
3. 利用MATLAB读取SMOS数据
SMOS数据的头文件使用的是XML构架,可以用:DOMnode = xmlread(filename)将XML 文档解析为DOM模型(引自陈建《Matlab 对基于二进制-XML 混合格式的SMOS盐度数据的提取方法与实现》)。
SMOS的数据块部分(.DBL文件)中,主要包括如下部分(引自陈建《Matlab 对基于二进制-XML 混合格式的SMOS盐度数据的提取方法与实现》):
(http://www.cesbio.ups-tlse.fr/SMOS_blog/wp-content/uploads/DOCS/SO-TN-IDR-GS-0006_v6_0_20110518.pdf)
在SMOS的一个数据块文件中,首先是此文件包含的网格点的数目:1个4 字节整数;然后是各个网格点的内容,包括:
(1)网格点标识:1个4 字节整数;
(2)地理坐标,即经纬度:2个4 字节浮点数;
(3)地球物理变量,即3个正演模型和1个简单模型反演的盐度值、误差及相关辅助参数:22个4 字节浮点数;
(4)控制标志:每个模型各4个字节(以比特为单位的23个控制标志和9个空标志),共16字节;
(5)控制描述:4个1 字节整数和26个2 字节整数;
(6)科学标志:每个模型各4个字节(以比特为单位的22个控制标志和10个空标志),共16字节;
(7)科学描述:1个2 字节整数。
其中对我们有用的部分主要为(2、3)两部分,都是4字节浮点类型,因此可以用fread(fid,’float32’)进行读取,但是这样同样会把其他部分数据按float32的格式读进来。在SMOS的L2级数据产品中包含105576个数据段,每一段表示卫星采集的一个地表数据点,利用fread读出的数据中,有效的和无效的数据长度是固定的,这样就意味着我们可以在固定的地方找到想要的数据,我们利用fseek函数对文件指针进行定位,这样,读取的代码如下:
clc;clear;
format long
fid = fopen('SM_OPER_MIR_OSUDP2_20140728T210254_20140728T215614_550_001_1.DBL');
k = 105576;
data = zeros(k,24);
frewind(fid);
fseek(fid,8,'cof');
for i = 1:k
data(i,:) = fread(fid,24,'float32')';
fseek(fid,94,'cof');
end
nccreate('smos_data.nc','data','Dimensions',{'lon',105576,'lat',24});
ncwrite('smos_data.nc','data',data);
2015-3-16;Monday;Cloudy
由于SMOS数据的独特结构,直接利用MATLAB对其进行读取相对较为麻烦,需要深入了解其数据结构及相关的调用语言,因此这里进一步给出一个间接但是有效方便的方法,即利用beam VISAT+SMOS toolbox(如上文所述)或者Sentinel 3 toolbox(类似于beam VISAT+SMOS toolbox,几乎相同,可以从这里下载该软件:https://sentinel.esa.int/web/sentinel/toolboxes/sentinel-3)将SMOS数据转换为NetCDF4-CF格式,然后利用MATLAB直接读取这个NetCDF4-CF格式的文件,读取的方法介绍见:http://blog.sciencenet.cn/blog-1652477-874870.html。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-20 05:01
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社