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]