###### tags: `timeseries` `isce` `sbas` `PSInSAR` `Sentinel1` `stripmap`
# ISCE TOPS-stack 教學
:::info
**Introduction**
1. ISCE 為SAR處理前軟體,主要用於產生配準/解纏過的影像對。在此處使用的是開源版本的isce。
2. StaMPS 為PS-InSAR 時間序列處理程式,包含single master與sbas 兩種執行模式,需在matlab中執行,也需要在使用前設定stamps 環境變數。
4. mintpy([Miami INsar Time-series software in PYthon](https://github.com/insarlab/MintPy)),為SBAS處理軟體,使用前同樣需要設定minpy 環境變數。
:::spoiler Reference for the software
ISCE
- Rosen, P. A., Gurrola, E., Sacco, G. F., & Zebker, H. (2012). The InSAR scientific computing environment. In EUSAR 2012; 9th European Conference on Synthetic Aperture Radar (pp. 730–733).
:::
:::info
**相關連結**
- [ISCE-Stamps/MTI (PS)](/Je0fJkX_TsS1nqCoaW2bwA)
- [StaMPS/MTI (PS)](/hxddWhmLRuS5M6MGoi9W8Q)
- [ISCE-mintpy (SBAS)](/oPMP3nM7QD-woHP_KjN4BA)
- [ISCE-Stripmap processing Note](/vcIv754cRB2NhO53xuQkAQ)
:::
## Sentinel-1 image
- 使用前需要設定環境變數
`export PATH=$ISCE_HOME/contrib/stack/topsStack:$PATH`
- 使用stackSentinel.py的腳本來執行
- ISCE主要有兩種 workflow 與對應的時間序列軟體可以選擇:
- slc: StaMPS/MTI
- interferogram: Mintpy(SBAS)
### Step 1: DEM 生成
如果使用開源ISCE, 並不會產生DEM檔案,但是可以利用topsApp.py處理DInSAR影像來獲得DEM。
或是還有以下方法可以[建立dem](http://earthdef.caltech.edu/boards/4/topics/483)
1. 利用 dem.py
` dem.py -a stitch -b 25 26 121 122 -r -s 1`
- -a: ACTION, 再這邊執行拼接.
- -b: 範圍, 必須是整數(S N W E)'
- -r: report.
- -c: 將座標系統由EGM96 -> WGS84
- -f: (filled)填補空白區域
- -s: 選擇使用的strm 種類(1 or 3)
* 如果使用anaconda環境下dme.py無法下載DEM,其原因是DEM的預設下載網站變更,但是原始碼並未更新,需要改成以https憑證下載。
2. GDAL
```bash=
gdal_translate -of ISCE combinedDEM.vrt stitched.dem
gdalbuildvrt combinedDEM.vrt stitched.dem
```
最後,需要將DEM中路徑改為絕對路徑:
`fixImageXml.py -i DEM_FILE.dem`
### Step 2: 依照需求建立影像推(Stack)
### ISCE-StaMPS/MTI (slc workflow)
執行以下指令來建立影像堆,使用的處理流程(workflow)為slc。
```bash=
IMG=IMG_DIR
ORB=ORB_DIR
AUX=AUX_DIR
DEM=DEM_DIR
BBOX=
MASTER=20201218
stackSentinel.py -W slc -s $IMG -o $ORB -a $AUX \
-m $MASTER -b "$BBOX" -d $DEM
```
* ORB與AUX檔案可以預先下載或指定空資料夾自動下載(研究室有已經下載好的)
* 但是DEM必須要自行生成(也可以自行使用5m/20m DEM)
* 完成後會產生run_files 資料夾、config資料夾、SAFE_FILES,然後依據執行run_files中 run01~run13 即可。
* 執行時可以只用以下指令來平行化
`parallel -j n_core -a run_script`
**[注意]**
- 但是注意geo2rdr, resample 等指令原本的計算量較大,應避免平行化
- 部份指令平行化不見得會較快速(磁碟寫入速度有上限,e.g. merge)
**接下來的步驟請參照:** [Stamps/MTI(isce) NOTE](/Je0fJkX_TsS1nqCoaW2bwA)
----
### ISCE-mintpy (interferogram workflow)
- 同PSInSAR, 但在workflow 選擇 interferogram(預設,不須額外指定), 不需要選擇master, 使用-c 在時間上選擇時間最鄰近的5張:
```bash
dem=your_dem_path
SLC=PATH_to_SLC
AUX=PATH_to_AUX
ORB=PATH_to_ORB
BBOX="S N W E"
start=yyyy-mm-dd
stop=yyyy-mm-dd
sentinelStack.py -s $SLC -a $AUX -o $ORB -d $dem -c 5 \
-b "$BBOX" --start_date $start --stop_date $stop
```
- 結束後會產生run_files資料夾,並有run_01~run_16,依序執行後可開始進行小基線處理。
- 之後的操作流程請參考:
[ISCE-mintpy processing NOTE](/oPMP3nM7QD-woHP_KjN4BA)
----
<!--
### Error Issue
http://earthdef.caltech.edu/boards/4/topics/3066
但是拿掉一些參數又過了???????
-->
## 接續性分析
如果想要讓分析可以持續進行,但是又需要節省空間
絕對不能刪除的資料夾:
- reference(dependency)
- coreg_secondarys(dependency)
- geom_reference(dependency)
- merged(results)
- baselines(mintpy)
- misreg(待確認)
原則可以刪除(?)
- coarse_interferograms
- ESD
- stack(每次重跑都會更新)
## ESD process 與潛在問題
這個步驟如果有問題,不會造成整個程式的停止(嚴格來說不是Error)
但是卻會嚴重影響後續(尤其是unwrapping與小基線時間序列)

*Figure Busrt Gap caused by ESD coregistration error*
When Error Log Appears:
`Coherence threshold too strict. No points left for reliable ESD estimate`
建議:
- 手動移除該影像與其相關的所有干涉對(筆者現在還沒時間撰寫去自動化腳本,但是可以直接從misreg/dates資料夾中確認是否有正確生成即可)
- 或是手動調整該影像段的ESD Coherence Threshold (直接調整config file)