MintPy
迈阿密基于Python的InSAR时间序列软件(MintPy,读作/mɪnt paɪ/)是一个用于干涉合成孔径雷达(InSAR)时间序列分析的开源软件包。它读取ISCE、ARIA、FRInGE、HyP3、GMTSAR、SNAP、GAMMA或ROI_PAC格式的干涉图堆栈(已配准和解缠),并生成视线方向上的三维(空间2D和时间1D)地表位移。它包括一个常规时间序列分析(smallbaselineApp.py
)和一些独立的工具箱。
在1.1.1版本之前,这个软件包被称为PySAR。从1.1.2版本开始,我们改用MintPy这个名称。
这是一个研究用代码,按"原样"提供给您,不保证其正确性。使用风险自负。
1. [安装](https://github.com/insarlab/MintPy/blob/main/./installation.md
2. 运行MintPy
2.1 常规工作流程 smallbaselineApp.py
MintPy读取一堆干涉图(解缠后的干涉图、相干性和SNAPHU的连通分量(如果可用))和几何文件(DEM、查找表、入射角等)。你只需要提供文件所在的路径,MintPy就会处理剩下的工作!
smallbaselineApp.py # 使用默认模板'smallbaselineApp.cfg'运行
smallbaselineApp.py <自定义模板> # 使用默认和自定义模板运行
smallbaselineApp.py -h / --help # 帮助
smallbaselineApp.py -H # 打印默认模板选项
smallbaselineApp.py -g # 如果默认模板不存在,则生成
smallbaselineApp.py -g <自定义模板> # 基于自定义模板生成/更新默认模板
# 使用--start/stop/dostep选项运行
smallbaselineApp.py GalapagosSenDT128.txt --dostep velocity # 只运行'velocity'步骤
smallbaselineApp.py GalapagosSenDT128.txt --end load_data # 在'load_data'步骤后结束运行
在smallbaselineApp.py中,它读取解缠后的干涉图,将它们全部参考到同一个相干像素(参考点),计算相位闭合并估算解缠误差(如果要求的话),将干涉图网络反演为时间序列,计算时间相干性以评估反演质量,校正本地振荡器漂移(仅适用于Envisat),校正分层对流层延迟(使用全球大气模型或相位-高程比方法),移除相位斜坡(如果要求的话),校正DEM误差,...最后估算速度。
每个步骤的配置参数在可自定义的文本文件smallbaselineApp.cfg中以默认值初始化。
示例:加拉帕戈斯群岛费尔南迪纳火山的Sentinel-1数据
wget https://zenodo.org/record/3952953/files/FernandinaSenDT128.tar.xz
tar -xvJf FernandinaSenDT128.tar.xz
cd FernandinaSenDT128/mintpy
smallbaselineApp.py ${MINTPY_HOME}/docs/templates/FernandinaSenDT128.txt
结果图保存在**./pic**文件夹中。要探索更多数据信息和可视化,请尝试以下脚本:
info.py # 检查HDF5文件结构和元数据
view.py # 2D地图视图
tsview.py # 1D点时间序列(交互式)
plot_coherence_matrix.py # 绘制一个像素的相干性矩阵(交互式)
plot_network.py # 绘制数据集的网络配置
plot_transection.py # 沿2D矩阵的一条线绘制1D剖面(交互式)
save_kmz.py # 生成点或栅格图像的Google Earth KMZ文件
save_kmz_timeseries.py # 为时间序列生成点格式的Google Earth KMZ文件(交互式)
2.2 自定义处理流程
MintPy是一个包含独立实用脚本的工具箱。只需使用-h / --help
运行脚本即可查看其用法,你可以构建自己的自定义处理流程!这里是一个比较使用不同对流层延迟校正估算的速度的示例。
2.3 基于mintpy
模块构建
MintPy采用Python模块化设计,具有实用的类和函数,并在代码级别有详细注释。熟悉Python的用户可以基于mintpy.objects
和mintpy.utils
构建自己的函数和模块。然而,我们目前还没有完整的API文档网站(也许你可以为此做出贡献!)。以下是一个从HDF5文件中读取位移时间序列3D矩阵的示例。
from mintpy.utils import readfile
ts_data, meta = readfile.read('timeseries_ERA5_ramp_demErr.h5')
3. 文档
软件中实现的算法在Yunjun等人(2019)的论文中有详细描述。
- 使用示例数据集快速入门
- 示例数据目录
- 示例模板文件
- Jupyter Notebook教程
4. 联系我们
- 大多数开发讨论都在GitHub上进行。欢迎提出问题或对任何开放的问题或拉取请求发表评论。
- 加入我们的Google Groups用户论坛或使用GitHub讨论功能提问或留言。
5. 贡献
**冒名顶替综合症免责声明:**我们需要你的帮助。真的。
你的内心可能有个小声音告诉你还没准备好成为开源贡献者;你的技能还不够好,无法做出贡献。你能提供什么呢?
我们向你保证 - 你内心的小声音是错的。只要你会写代码,就可以为开源项目贡献代码。为开源项目做贡献是提升编码技能的绝佳方式。优秀的开发者不是以写出完美的代码来衡量的(那样会取消我们所有人的资格!);而是尝试创造,犯错,并从错误中学习。这就是我们所有人进步的方式,我们很乐意帮助他人学习。
**成为开源贡献者不仅仅意味着写代码。**你可以通过撰写或校对文档、建议或实现测试,甚至是对项目提供反馈来提供帮助(是的 - 这包括对贡献过程提供反馈)。这些贡献对整个项目来说可能是最有价值的,因为你是以全新的视角来看待项目,所以你能看到资深贡献者忽略的错误和假设。
欲了解更多信息,请阅读我们的贡献指南。
本免责声明改编自MetPy项目。
6. 引用本作品
Yunjun, Z., Fattahi, H., and Amelung, F. (2019), 小基线InSAR时间序列分析:解缠误差校正和噪声降低, Computers & Geosciences, 133, 104331.
除上述内容外,我们建议你引用描述特定分析中使用的算法的原始出版物。这些内容在默认模板文件中有简要说明,并在参考文件中列出。