SNAP 时间序列InSAR数据准备

1.SNAP简介

      SNAP是由欧空局开发的一款用于哨兵卫星数据处理的开源软件,其中s1tbx可用于哨兵1A、1B InSAR数据处理,可以进行哨兵数据的导入、精轨校正、配准、干涉、数据条带分割、Deburst(不知道如何翻译准确)、数据剪裁操作,以及时间序列InSAR数据准备工作(时间序列分析StamPS文件准备)。

     根据自己一段时间的使用,大致总结了一下优缺点,见下表,仅供参考。

优点

缺点

SNAP是欧空局长期开发和维护的,可以说是哨兵数据的“官方处理软件”,并且开发、社区支持较为活跃,版本更新较快;

处理过程对硬件要求较高,内存优化有待提高;

SNAP全部为JAVA语言进行构建,只要电脑中有JAVA环境就可运行,具有良好的跨平台特性;

时间序列InSAR支持较为基本,当前版本仅仅支持PSI数据准备;尚不支持SBAS数据准备(可自行定义);

SNAP代码全部开源,并且基于JAVA构建,给二次开发和应用,提供了便利条件。

对Gamma格式的元数据导出不够完整。

可以自定义数据处理流程图,并且使用Python语言进行批量调用和处理,灵活性很高。

软件中仍存在一些逻辑冲突和运行Bug,需要后期版本完善。

   2.软件使用

    2.1软硬件环境

       SNAP软件对硬件要求较高,已在下表所示软硬件环境下做了测试,可供参考:                                                       

操作系统

软件环境

硬件环境

Windows10 64bit

Unbutu16.04 64bit

Java 8

CPU: I7 4790k

内存:32G   

      备注:内存不得小于24GB,否则处理过程会报内存溢出类错误

   2.2软件安装

       打开官方下载链接,进行对应版本软件下载,32位系统的机器,做做数据显示还行,数据处理还是用64位的机器吧。 

                                       SNAP 时间序列InSAR数据准备_第1张图片         ​

(1)Windows安装

          下载64位安装文件后,按默认选项安装。

(2)Linux安装

         下载安装文件,安装文件为.sh格式文件,下载完成后,使用root权限,用命令安装。

                                               > ./ esa-snap_sentinel_unix_6_0.sh

2.3软件界面及功能

(1)软件主界面

                                        ​SNAP 时间序列InSAR数据准备_第2张图片

     雷达数据处理相关工具都在Radar下面,图中为加载哨兵原始数据(zip)格式。

(2)数据显示

    SNAP能够对原始哨兵数据进行非常好的显示,其中可在三维地球上显示数据范围,如下图所示:

                               SNAP 时间序列InSAR数据准备_第3张图片                                       ​

(3)雷达数据处理

    1)流程图处理

     SNAP有强大的自建处理流程的功能,类似于ArcMap的ModelBuilder,如下图所示,使用Graph Builder工具能够添加各个数据处理流程,形成完整的数据流。

                                             SNAP 时间序列InSAR数据准备_第4张图片                  ​

     其中,SNAP官方自带了(windows 在c盘 \Users\username\.snap\graphs)许多流程处理图,可进行学习和研究。

                                                       ​SNAP 时间序列InSAR数据准备_第5张图片

2)批量处理 

使用批量处理工具,结合自定义的流程图,可按照此流程图进行批量的数据处理。

                               SNAP 时间序列InSAR数据准备_第6张图片        ​

     批量数据处理工具存在不稳定性,这里建议使用调用gpt的方式进行数据的批量处理。

3)通过Python进行批量处理

      SNAP提供了使用命令行方式调用SNAP引擎进行数据处理的方式,在SNAP安装目录下 bin文件夹中有gpt.exe文件,通过Python以可执行文件的方式调用gpt文件,可进行批量数据处理,且性能稳定。

                                            

      记得处理前,把gpt.vmoptions里面内存大小改高一点,除了系统运行的内存之外,其他都给SNAP,不得小于24GB。

                              SNAP 时间序列InSAR数据准备_第7张图片             ​

调用步骤如下:

1.按需求定义处理文件,例如这里想要批量进行数据的ESD精校准操作,首先使用Graph Builder工具构建处理流程图。

                                                SNAP 时间序列InSAR数据准备_第8张图片

2.将流程图存储为xml格式文件,供使用。

3.编写Python脚本批量调用(批量调用的写法,请参考开源项目snap2stamps

3.时间序列预处理

    (1)SNAP和StaMPS软件结合

     SNAP设置了将数据预处理(Split、精轨校正、配准、干涉、Deburst、剪裁)之后的数据导出到StaMPS软件进行后续时间序列InSAR处理的功能,但只能导出单主影像PSInSAR处理流程所需的数据,尚不支持SBAS InSAR处理相关数据的导出功能。这一步主要参照开源项目snap2stamps提供的手册和脚本进行批量的处理。

     这里需要强调一点,SNAP的运算十分消耗内存,对于多步骤的数据处理,如

                                  ​SNAP 时间序列InSAR数据准备_第9张图片

   如果没有内存很大(数百GB),最好不要一个流程图跑完,最好进行下流程的拆分,一步步的跑。

(2)SNAP和Gamma软件结合

     SNAP虽然预处理的数据结果导出后的格式为Gamma格式,但是他的元数据par文件中信息是不全的,而且,经过Stack操作(配准、干涉都会生成Stack)再导出为slc数据,仅仅会保留master主影像的元数据,不论在导出时怎样选择(仅选择slave)都无济于事,怀疑是软件bug。

    通过翻官方论坛,可以看到官方给出(连接)的解释如下

SNAP 时间序列InSAR数据准备_第10张图片 ​                       ​

   大概意思是,SNAP虽然有导出GAMMA格式的功能,但是那是为StaMPS准备的。

    后续,我会探索仅仅进行Split --精轨校正(Apply Orbit)---Deburst然后导出Gamma格式,再进行后续处理的思路,会在后续博客中给出。

   以上是SNAP软件使用的一些总结,欢迎各位感兴趣的同行一起讨论 [email protected]

 

你可能感兴趣的:(InSAR)