LiCSBAS_plot_ts.py脚本实战:如何高效导出SBAS形变时序曲线图(附分辨率优化技巧)
作为一名长期与InSAR数据打交道的地质监测工程师,我深知从海量干涉图中提取清晰、直观的时序形变信息是多么关键的一步。LiCSBAS工具箱里的LiCSBAS_plot_ts.py脚本,正是我们日常工作中将处理结果转化为洞察力的核心桥梁。但很多同行初次接触时,往往止步于基础命令的调用,生成的图表要么分辨率感人,要么交互效率低下,难以满足项目报告或学术出版的高标准要求。这篇文章,我将抛开手册式的泛泛而谈,直接切入实战,分享如何通过参数组合、交互技巧和底层调整,让这个脚本真正高效地为你服务,产出既专业又美观的时序曲线图。
1. 脚本核心参数深度解析与实战组合
LiCSBAS_plot_ts.py的强大之处在于其丰富的参数,但盲目堆砌只会适得其反。理解每个参数背后的数据流和可视化逻辑,才能组合出高效的命令。
1.1 输入与参考:构建分析的基础框架
脚本的运行始于正确的数据输入和参考系设定。-i参数指定累积位移文件(通常是cum_filt.h5),这是所有绘图的数据源头。但很多人忽略了--i2的妙用。当你同时处理了滤波前和滤波后的结果时,通过-i cum_filt.h5 --i2 cum.h5,可以在交互界面中快速切换视图,直观对比滤波处理对形变信号的影响,这对于评估数据处理流程的合理性至关重要。
参考日期(-m)的选择则直接影响时序曲线的“零点”。默认使用第一景影像的日期,但这不一定是最优的。例如,如果你的研究区域在时间序列中期发生过一次显著的地震,那么选择震前一个稳定的日期作为参考,能使震前震后的形变趋势更加清晰。命令如下:
LiCSBAS_plot_ts.py -i TS_GEOCml1/cum_filt.h5 -m 20180101
1.2 空间范围与目标点的精准锁定
交互式查看虽然方便,但在批量处理或远程服务器操作时,我们更希望一键直达目标。-r和-p参数就是为此而生。
-r参数:用于定义初始显示的感兴趣区域(ROI)。格式为x1:x2/y1:y2,这里的x和y指的是像素坐标。如何快速获取?你可以先不带-r参数运行脚本,在交互地图上框选出你的研究区,脚本会在终端输出对应的像素坐标范围,记下来用于后续的自动化脚本。-p参数:直接指定要绘制时序曲线的像素点。同样,在交互模式下点击目标点,终端会输出该点的坐标。之后,你就可以用类似-p 255/300的命令直接生成该点的时序图,无需再次手动点击。
对于更习惯地理坐标的同行,--ref_geo和--p_geo参数是福音。它们允许你直接用经纬度来定义区域和点,省去了从地理坐标到像素坐标的转换步骤。例如:
LiCSBAS_plot_ts.py -i cum_filt.h5 --ref_geo 116.2/116.5/39.8/40.0 --p_geo 116.35/39.9
注意:使用地理坐标参数要求你的
cum*.h5文件包含正确的地理信息头文件。通常,由LiCSBAS标准流程输出的文件都具备该信息。
2. 交互式操作进阶技巧与效率提升
即使设定了初始参数,交互式界面仍然是探索数据、发现异常点的主战场。掌握以下技巧,能让你的探索效率倍增。
2.1 视图切换与数据层管理
在打开的交互窗口中,键盘快捷键是你的得力助手:
v键:在平均速度场视图和累积位移场视图之间切换。这是最常用的功能,用于从宏观运动速率和累积形变量两个维度理解区域形变。n键:循环切换不同的噪声指标图层(如空间相干性、大气延迟指数等)。结合-d参数指定的results目录,你可以快速评估数据质量在不同区域的分布,判断时序结果的可信度。- 鼠标右键拖动:重新定义参考区域。这是SBAS方法的核心操作之一。默认的参考区域(可能是整个场景或
info/ref.txt指定)可能包含不稳定信号。通过右键拖拽选择一个形变理论上应为零的稳定区域(如基岩出露区、大型水库中央),可以显著优化整个形变场的显示,去除共模误差。
2.2 高效的点位探查与对比分析
用鼠标左键点击地图上的任意像素点,右侧会实时更新该点的时序形变曲线。但如何系统性地探查多个潜在兴趣点?
- 坐标记录法:在点击过程中,密切关注终端输出。每点击一个点,终端都会打印其像素坐标和地理坐标。将这些坐标记录在一个文本文件中,形成一份“兴趣点清单”。
- 批量生成预览:虽然脚本本身不支持真正的批量导出,但你可以基于“兴趣点清单”,快速写一个简单的Shell循环,依次使用
-p参数和--ts_png参数生成多个点的PNG图片进行快速预览,筛选出最具代表性的点位进行深入分析。
3. 输出优化:从屏幕截图到出版级图表
默认的交互窗口截图分辨率低,无法用于正式报告。--ts_png参数是实现高质量输出的关键,但其默认设置仍需优化。
3.1 基础导出与常见问题
直接使用--ts_png命令可以将当前视图(包括地图和时序曲线)保存为PNG文件:
LiCSBAS_plot_ts.py -i cum_filt.h5 -r 100:200/150:250 --ts_png ./output/my_deformation.png
然而,你可能会遇到两个问题:
- 图片尺寸或元素比例失调:地图过大,时序图过小,或反之。
- 分辨率不足:生成的图片放大后模糊,线条有锯齿。
第一个问题可以通过调整显示窗口的大小来解决。在弹出交互窗口后,不要急着点击,先手动拖动窗口边框,调整到一个你满意的布局比例,然后再进行点位选择等操作。此时再使用--ts_png导出,就会保持当前的窗口布局。
3.2 终极解决方案:修改源码提升DPI
针对分辨率问题,最根本的方法是修改LiCSBAS_plot_ts.py脚本的源码,提高其保存图片的DPI(每英寸点数)。这是将成果提升至出版质量的核心技巧。
找到你的LiCSBAS安装目录下的脚本文件,通常路径类似于~/LiCSBAS/bin/LiCSBAS_plot_ts.py。使用文本编辑器打开它,搜索与保存图片相关的代码段。通常,在代码末尾部分,你会找到类似plt.savefig(pngfile)的语句。
你需要修改这行代码,添加dpi参数。出版级图表通常要求600 DPI或更高。修改后的代码应类似:
plt.savefig(pngfile, dpi=600, bbox_inches='tight')
dpi=600:将输出分辨率设置为600 DPI。bbox_inches='tight':这是一个非常实用的参数,它会自动裁剪图片周围多余的空白区域,让图表内容更紧凑。
修改并保存后,再次运行带有--ts_png参数的命令,导出的PNG文件将是高清的矢量友好格式(尽管是栅格图,但高DPI使得线条和文字极其清晰)。
提示:在修改任何源码前,建议先备份原文件。此外,极高的DPI(如1200)会生成巨大的文件,在确保质量的同时也需考虑存储和加载速度。
4. 高级应用场景与排错指南
掌握了核心操作后,我们可以将脚本应用于更复杂的场景,并提前规避一些常见陷阱。
4.1 复杂场景下的参数搭配
| 应用场景 | 关键参数组合 | 目的与说明 |
|---|---|---|
| 对比不同滤波结果 | -i cum_filt_spatial.h5 --i2 cum_filt_temporal.h5 | 对比空间滤波和时间滤波效果对特定点时序的影响。 |
| 突出显示形变范围 | --vmin -20 --vmax 20 | 手动设置速度图色标范围,避免自动范围被少数极端值主导,使主要形变区对比度更明显。 |
| 忽略掩膜检查 | --nomask | 在确认数据质量良好或掩膜文件有问题时,跳过掩膜步骤,直接显示所有像素。 |
| 定制化配色 | -c SCM.vik | 更换颜色映射,SCM.vik是一种对色盲友好的配色,适合学术发表。 |
4.2 常见报错与解决方案
-
错误:
FileNotFoundError: [Errno 2] No such file or directory: 'results/coh_avg'- 原因:
-d参数指定的目录(默认results)不存在,或其中缺少脚本需要的噪声指数文件(如coh_avg)。 - 解决:确保你从正确的处理目录(包含
cum*.h5和results子目录)运行脚本。如果确实不需要查看噪声图层,可以不使用-d参数。
- 原因:
-
错误:交互窗口闪退或无法弹出
- 原因:最常见的原因是缺少图形显示后端(尤其在远程服务器上),或者
--ts_png参数与交互模式冲突。 - 解决:
- 对于远程服务器,确保使用支持X11转发的SSH连接(如
ssh -X user@server),并已安装必要的图形库。 - 如果只需要导出图片,确保命令中包含了
--ts_png,脚本会在后台生成图片后退出,不会尝试弹出窗口。 - 在脚本开头强制指定非交互式后端(仅用于导出):可以通过在Python命令前设置环境变量
MPLBACKEND=Agg,或者修改脚本中的matplotlib使用方式,但这涉及更深度的定制。
- 对于远程服务器,确保使用支持X11转发的SSH连接(如
- 原因:最常见的原因是缺少图形显示后端(尤其在远程服务器上),或者
-
生成的时序曲线Y轴量程不合理
- 原因:自动确定的Y轴范围可能包含了少数异常跳变点,导致主要形变趋势被压缩在一条线上。
- 解决:使用
--ylen参数手动指定Y轴的长度(单位:毫米,相对于图形尺寸)。这需要一些试验。更好的方法是先交互查看,观察合理的形变量范围,然后通过多次尝试--ylen值来获得最佳显示效果。
经过这些优化,LiCSBAS_plot_ts.py从一个简单的查看工具,变成了一个强大的、可定制化的成果输出引擎。我个人的习惯是在完成一系列处理流程后,编写一个包含多个-p坐标和--ts_png导出命令的脚本,一次性生成所有关键监测点的出版级时序图,这比手动操作要节省数小时的时间。最后,记得定期备份你修改过的脚本,并在升级LiCSBAS版本时留意这些自定义修改是否需要迁移。
252



被折叠的 条评论
为什么被折叠?



