• 【卫星测高】基本雷达测高工具箱BRAT(Basic Radar Altimetry Toolbox)简单的使用说明


    写在前面

    卫星测高数据处理方面的知识,基本上都是自己看资料摸索的,所以不可避免的会有很多的不足(如果我有地方说的不明白望谅解),所以我把这些放在GitHub上面,希望有人去forkpull request,让其更完善,也希望有人可以和我讨论,把这些数据处理经验都总结起来,如果后来人跟我们有一样的困惑不至于找不到答案。

    英文很重要,没有办法,软件是老外搞的,界面、说明文档等都英文的,如果英文好,看文档绝大部分问题应该都可以解决。我的英文水平也不好,所以看起来也有些费力,但是没有办法。所以我想做的事情,不是把英文翻译成中文,而是做资源的整合,知识脉络的整理,问题的讨论。

    1.简介

    1

    BRAT(Basic Radar Altimetry Toolbox,基本雷达测高工具箱),官网下地地址,截至2016年10月28日其版本号为v3.3.0。

    BART为开源软件,其源码挂在GitHub(地址)上,由欧空局(ESA)法国空间局(CNES)共同开发。主要功能(官网介绍):

    下载

    其下载需要注册,过程不算麻烦,注册后即可下载,如果读者不想注册,此处提供一个brat-3.3.0-x64-installer(链接:http://pan.baidu.com/s/1o8hf53c 密码:07c4)

    2.一些简单操作

    操作手册《brat_user_manual》里面有它的详细用法,我不作翻译了,简单说一下使用的流程和一些注意事项。

    基于我用到的功能,做如下介绍:

    1. BRAT界面的简单介绍。
    2. 数据读取导出。
    3. 筛选
    4. 用到的视图

    2.1 BRAT界面

    这是BRAT的界面:

    2

    用BRAT的操作流程可以概括为4个步骤(参看《brat_user_manual》16页):

    1. 创建Workspace(工作空间)
    2. 创建Dataset (数据集)
    3. 创建Operation (操作)
    4. 创建View (视图)

    这几个功能分别对应于界面上的选项卡。

    需要注意的是,这4个步骤是一个递进的关系,后面的依赖于前面的。比如,workspace没有创建就无法加载Dateset,没有Dateset就无法进行Operation,没有Operation就无法创建View。这其实是很自然的一个逻辑关系。

    2.2 创建Workspace(工作空间)

    BRAT处理的策略很简单,使用工作空间,将与该项目相关的所有信息(比如,数据的路径、筛选条件等)都存放在该文件夹下。

    从菜单Workspace->New即可创建一个工作空间,路径及名称不建议使用中文,我无法确定使用中文是否会导致意想不到的问题。

    创建后会在相应路径下生成文件夹及文件(我的目录:F:BRATworkspace est):

    │  setup.ini
    │
    ├─Datasets
    │      setup.ini
    │
    ├─Displays
    │      setup.ini
    │
    ├─Formulas
    │      setup.ini
    │
    └─Operations
            setup.ini

    setup.ini是配置文件,记录配置信息。下面是测试,对理解软件是如何工作的有帮助,对实际操作无太大影响(不看也不会影响软件的使用):

    新建一个工作空间后,不做任何操作,该工作空间是空的,查看各个setup.ini文件内容:

    ; testsetup.ini内容
    [General]
    WorkspaceName=test
    WorkspaceLevel=1
    ; testDatasetssetup.ini内容
    [General]
    WorkspaceName=Datasets
    WorkspaceLevel=2
    ; Displays、Displays、Operations下的内容大同小异

    可以看到,setup.ini文件存放了工作空间的名称和工作空间的等级,test是首级所以Level=1,而Datasets是其下面的一级所以Level=2,从目录树就可以反应出来。

    现在创建数据集、加载数据,保存工作空间,Datasets文件夹下的setup.ini文件内容发生如下变化:

    ; testDatasetssetup.ini内容
    [General]
    WorkspaceName=Datasets
    WorkspaceLevel=2
    [Datasets]
    DatasetName1=Datasets_1
    DatasetName2=Datasets_2
    DatasetName3=Datasets_3
    [Datasets_1]
    File1=F:\JA2_GPS_2PdP002_138_20080727_074001_20080727_083614.nc
    [Datasets_2]
    File1=F:\JA2_GPS_2PdP003_138_20080806_053833_20080806_063445.nc
    [Datasets_3]
    File1=F:\JA2_GPS_2PdP001_138_20080717_094129_20080717_103742.nc
    File2=F:\JA2_GPS_2PdP002_138_20080727_074001_20080727_083614.nc
    File3=F:\JA2_GPS_2PdP003_138_20080806_053833_20080806_063445.nc

    即使不懂配置文件的语法也能看出我做了什么事情。是的,我创建了三个数据集分别为Datasets_1、Datasets_2、Datasets_3,在Datasets_1和Datasets_2中各有一个nc文件,在Datasets_3中有三个nc文件。


    2.3 创建Dataset (数据集)

    第一个选项卡即Datasets,单击New按钮即可创建新数据集,所有按钮的功能基本看名字就能明白是做什么的。

    示例数据:链接:http://pan.baidu.com/s/1qXKaU2C 密码:3rxl

    8

    在这个页面,单击一个nc文件,可以查看该文件中的所有字段的名称单位维度详细描述等信息,但不能看到具体的数据(需要导出后查看)。用HDF Explorer可以查看数据结构,并且能直接查看数据,见:用matlab读取测高卫星jason2的netCDF格式数据的简单示例(一)。使用BRAT前一定要知道nc文件的数据格式。

    2.4 创建Operation (操作)

    Operation 做的事情就是,对选定的数据进行编辑(筛选),支持数据的导出。以下为一个示例:

    2.4.1 选择需要的数据字段

    新建一个Operation ,选定一个Dataset ,将纬度(lat)拖拽到X或者右键Set as X;经度(lon)、轨道高(alt)、测距值(range_20hz_ku)拖拽到Data下,或者右键Set as Data

    2.4.2 设置筛选条件

    设置筛选条件的目的就是选出我们需要的数据,筛选条件有很多,比如将其限制在一定的经纬度范围内,测距值不为空,以及许多的flag,等等。

    这就要涉及条件表达式和函数了,常见的有:

    !   % 非
    !=  % 不等于
    &&  % 并且
    ||  % 或者
    <   % 小于
    is_bounded % 限制范围,例如 is_bounded(22.0682,lat,22.3311) 限制纬度的范围
    ......

    可以单击Insert fuction按钮查看所有的符号和函数。

    最简单的例,只限制纬度范围,并且要求测距值不为缺省值(DV),那么表达式应该这样写(写在Selection creiteria里面):

    is_bounded(22.0682,lat,22.3311) && range_20hz_ku != DV

    6

    Insert formula中,给出了很多卫星的筛选条件,可以参考。

    2.4.3 计算和导出

    设置好筛选条件后,执行它,再按照我们的需要导出。执行单击Execute按钮,其实只需要点击Export,在导出的时候软件会根据筛选条件进行筛选。

    如果需要做一些计算,比如计算高程,那么右键DataInsert an empty expression并将其重命名为height,在右边的Expression框中输入:

    alt - range_ku

    7

    也可以单击Insert formula查看软件自带的一些计算公式,比如计算SSH(Sea Surface Height )和SLA(Sea level anomalies )。导出的时候就会增加一列height

    单击Export按钮,导出格式选择Ascii,即文本文件,此处导出的数据如下(为了整齐,我把每列保留的小数统一了):

    alt (m)     height (m)      lat (degrees_north)     lon (degrees_east)      range_ku (m)  
    1341754.087 34.2734 22.097624   129.760587  1341719.813
    1341764.473 34.2311 22.146769   129.739138  1341730.242
    1341774.879 34.1581 22.195909   129.717671  1341740.721
    1341785.303 34.1056 22.245045   129.696186  1341751.198
    1341795.746 33.9925 22.294177   129.674683  1341761.754

    可以看到第二列即计算得到的海面高。

    如果需要复杂的计算和操作,建议写程序。

    还可以导出为NetCdfGeoTiff,其中GeoTiff需要Y有值。但是我感觉这两个功能实在用不上,首先是NetCdf,我们就是因为NetCdf是二进制不能直接打开所以才需要这些软件的帮助,给果又导出为NetCdf,这不给自己添麻烦吗;GeoTiff中可以导出kml文件在Google Earth中查看,但是导出来的文件总有问题。

    如果需要在Google Earth中查看导出来的点的位置,可以上网下载一个制作kml的软件,自己做,比较简单。如果觉得找起来比较困难,这里提供一个kmlgenerator:链接:http://pan.baidu.com/s/1jI2myAq 密码:g8hw,生成kml后直接双击它就会在Google Earth中中显示。

    使用注意:
    excel格式要xls
    excel必须要有3个Sheet,并且依次为Sheet123(也就是默认的,不能改)
    数据要有4列:经度、纬度、地名、备注(googleEarth点的格式吧)

    注意:

    如果是导出数据并做计算的话,尽量不要用到Y,设置一个X后其余数据全都设置为Data。以上面导出的结果为例,该例子以纬度(lat)作为X,导出的数据有5个点,每一行对应一个点。如果将经度(lon)设置为Y后是什么结果?明显,会有5*5=25行数据产生,这并不是我们想要的。

    2.5 创建View (视图)

    我觉得这个功能实在有点鸡肋,不过可以用一用,这里只做一个简单的介绍。

    为什么说鸡肋?它的功能是绘图,一维折线图等可以用更专业的绘图软件来实现,再加以代码可以批量处理和细节化;如果是二维的附着在地图上,GMT可能更专业一些。

    以前面的计算结果为例:

    2.5.1 一维图(y=f(x))

    查看计算得到的海面高(height)按纬度从低到高分布的折线图:在Views选项卡中新建一个,在Available中选中height,添加到右边的Selected框中,单击Execute

    3

    得如下结果:

    3

    可以设置线型、颜色、标题等等。

    2.5.2 二维图(z=f(x,y))

    由于是二维的,这里要用到Y,将Data里面的经度(lon)删除后重新设置为Y,为了看的清楚我把经度范围扩大了:is_bounded(2.0682,lat,22.3311)。重新执行operation和view得如下结果:

    3

    可以看到海面高的分布,下面是它的色标,红色高、蓝色低。并且可以改变投影方式等等。

    3. 一些问题

    BRAT使用起来或许有如下问题:

    1. 数据很多时,BRAT导出速度慢,但用matlab却很快,原因不明。
    2. 导出的数据可能会有问题,比如cycle号出现了小数(cycle号只能是整数),原因不明。
    3. 用BRAT会让人忽略掉数据的结构,如果我问测距值(range)是由什么确定的?它不是由经纬度确定的,1hz的range是由time一个维度确定的,20hz的range是由timemeas_ind两个维度共同确定的,而波形数据则是由timemeas_indwvf_inf三个维度共同确定的。
    4. 如果你觉得一些筛选条件是有效的,可以记录起来,并作说明,免得以后忘了。

    最后

    手册内容是英文,且内容太多,也许会让人产生一些困惑,但是多看就能理解。

    我写的实在不够好,远远不如参考手册,希望不至于误导他人。如果你完整看完参考文档,使用软件的能力会远远超过我的。

    常见问题

    Data Expressions里面的Y(optional)不要随便添加

    如果只是想导出数据,X里面设置lon或者lat,其余字体放到Data中去。

    如果在BRAT中显示地面轨迹,则X里面设置lon/lat中的一个,y里面设置lon/lat中的一个。

    如何导出指定区域的数据?

    Selection criteria(optional)里面写:

    is_bounded(0,lat,30)

    即可得到纬度为0-30度的数据,经度限制是一样的。

    数据的维度要对应

    1hz的和1hz的对应,20hz的和20hz的对应,比如X里面设置的是lon,这是1hz的,要导出的range时,用range_ku是正确的,range_20hz_ku就不行。所以一定要理解数据结构

    参考:

    《brat_user_manual》(比较全面的介绍)

    《20090929_RApractical》(这里里面有10个操作实例,值得一看)

    《brat_reference_manual_3.3.0》(代码接口的介绍,如果想用它的代码可以看看)

    BRAT官网

  • 相关阅读:
    锚的应用
    有关于MP3音频文件的编码解码资料吗
    自定义web.config配置节 (转)
    HTC 文件
    Asp.Net音频文件上传和播放
    dotnet下用c#编写下载器
    自动滚屏代码
    agsXMPP分析:agsXMPP Namespace
    Socket网络编程学习笔记(1)
    (♂)程序打包工具setup2go使用教程
  • 原文地址:https://www.cnblogs.com/shanchuan/p/8150329.html
Copyright © 2020-2023  润新知