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位的机器吧。
(1)Windows安装
下载64位安装文件后,按默认选项安装。
(2)Linux安装
下载安装文件,安装文件为.sh格式文件,下载完成后,使用root权限,用命令安装。
> ./ esa-snap_sentinel_unix_6_0.sh
2.3软件界面及功能
(1)软件主界面
雷达数据处理相关工具都在Radar下面,图中为加载哨兵原始数据(zip)格式。
(2)数据显示
SNAP能够对原始哨兵数据进行非常好的显示,其中可在三维地球上显示数据范围,如下图所示:
(3)雷达数据处理
1)流程图处理
SNAP有强大的自建处理流程的功能,类似于ArcMap的ModelBuilder,如下图所示,使用Graph Builder工具能够添加各个数据处理流程,形成完整的数据流。
其中,SNAP官方自带了(windows 在c盘 \Users\username\.snap\graphs)许多流程处理图,可进行学习和研究。
2)批量处理
使用批量处理工具,结合自定义的流程图,可按照此流程图进行批量的数据处理。
批量数据处理工具存在不稳定性,这里建议使用调用gpt的方式进行数据的批量处理。
3)通过Python进行批量处理
SNAP提供了使用命令行方式调用SNAP引擎进行数据处理的方式,在SNAP安装目录下 bin文件夹中有gpt.exe文件,通过Python以可执行文件的方式调用gpt文件,可进行批量数据处理,且性能稳定。
记得处理前,把gpt.vmoptions里面内存大小改高一点,除了系统运行的内存之外,其他都给SNAP,不得小于24GB。
调用步骤如下:
1.按需求定义处理文件,例如这里想要批量进行数据的ESD精校准操作,首先使用Graph Builder工具构建处理流程图。
2.将流程图存储为xml格式文件,供使用。
3.编写Python脚本批量调用(批量调用的写法,请参考开源项目snap2stamps)
3.时间序列预处理
(1)SNAP和StaMPS软件结合
SNAP设置了将数据预处理(Split、精轨校正、配准、干涉、Deburst、剪裁)之后的数据导出到StaMPS软件进行后续时间序列InSAR处理的功能,但只能导出单主影像PSInSAR处理流程所需的数据,尚不支持SBAS InSAR处理相关数据的导出功能。这一步主要参照开源项目snap2stamps提供的手册和脚本进行批量的处理。
这里需要强调一点,SNAP的运算十分消耗内存,对于多步骤的数据处理,如
如果没有内存很大(数百GB),最好不要一个流程图跑完,最好进行下流程的拆分,一步步的跑。
(2)SNAP和Gamma软件结合
SNAP虽然预处理的数据结果导出后的格式为Gamma格式,但是他的元数据par文件中信息是不全的,而且,经过Stack操作(配准、干涉都会生成Stack)再导出为slc数据,仅仅会保留master主影像的元数据,不论在导出时怎样选择(仅选择slave)都无济于事,怀疑是软件bug。
通过翻官方论坛,可以看到官方给出(连接)的解释如下
大概意思是,SNAP虽然有导出GAMMA格式的功能,但是那是为StaMPS准备的。
后续,我会探索仅仅进行Split --精轨校正(Apply Orbit)---Deburst然后导出Gamma格式,再进行后续处理的思路,会在后续博客中给出。
以上是SNAP软件使用的一些总结,欢迎各位感兴趣的同行一起讨论 [email protected]