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

博文

140731SMOS数据的读取和使用

已有 11049 次阅读 2014-8-1 17:43 |个人分类:科研笔记|系统分类:科研笔记| MATLAB, SMOS, beam, VISAT, SMOSViewer

2014-7-31ThursdaySunny

      由于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的一个数据块文件中,首先是此文件包含的网格点的数目:14 字节整数;然后是各个网格点的内容,包括:

1)网格点标识:14 字节整数;

2)地理坐标,即经纬度:24 字节浮点数;

3)地球物理变量,即3个正演模型和1个简单模型反演的盐度值、误差及相关辅助参数:224 字节浮点数;

4)控制标志:每个模型各4个字节(以比特为单位的23个控制标志和9个空标志),共16字节;

5)控制描述:41 字节整数和262 字节整数;

6)科学标志:每个模型各4个字节(以比特为单位的22个控制标志和10个空标志),共16字节;

7)科学描述:12 字节整数。

其中对我们有用的部分主要为(23)两部分,都是4字节浮点类型,因此可以用fread(fid,’float32’)进行读取,但是这样同样会把其他部分数据按float32的格式读进来。在SMOSL2级数据产品中包含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-16MondayCloudy

由于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





https://blog.sciencenet.cn/blog-1652477-816436.html

上一篇:140731SMOS数据产品介绍和获取
下一篇:140803偏振(极化)与其描述方式
收藏 IP: 219.243.215.*| 热度|

0

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

数据加载中...

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

GMT+8, 2024-9-27 10:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部