干过几轮SBAS-InSAR的人应该都有同感:这个技术路线做地表形变监测确实好用,但中间每一步都藏着坑,数据导入、基线选择、干涉网络构建、相位解缠、大气相位分离,稍不留神处理结果就是一张漂亮的"花屏"。这篇文章就把我平时跑的一套SBAS-InSAR流程完整拆开讲,从哨兵一号数据下载到SARscape出图,工具链选用SARscape(ENVI插件版),把参数设置、操作顺序、避坑技巧都写成可以直接抄作业的版本。内容面向正在入门InSAR的遥感方向研究生、测绘从业者,以及需要周期性形变监测结果但不想整套源码从零写的工程师。看完你会发现,SBAS这条路走通并不难,真正的关键点其实就几个。
1. 开始之前:SBAS-InSAR能做什么,SARscape为什么绕不开
1.1 一句话说清SBAS-InSAR的适用场景
SBAS(Small BAseline Subset,短基线集)是时序InSAR里最成熟、最稳的一种方法。它的核心思路是把影像按照时间基线和空间基线划分成若干个"小集合",集合内部干涉对基线短、相干性好,集合之间用奇异值分解(SVD)把多个小集合联合起来求解,最后得到整个时间跨度上的地表形变序列和平均形变速率。相比单次干涉测量(D-InSAR),SBAS能大幅降低时空去相干和大气延迟带来的误差,最适合用于城市沉降、矿区地表移动、滑坡缓慢变形、活动断层微形变这类"变化慢但持续存在"的场景。
实际应用里面,我们拿到一批哨兵一号(Sentinel-1)的SLC影像,用SBAS处理后输出的产品是:一段时间内的平均形变速率图(mm/year)和每个时间节点的累积形变图。这个结果可以直接导入GIS做灾害风险评估,也可以继续做时间序列分析找形变拐点。
1.2 为什么SARscape在这个流程里几乎是"默认选项"
如果不想从零写StaMPS或者自己搭GAMMA、ISCE的框架,SARscape是目前门槛最低、流程最完整的商业软件包。它深度集成在ENVI里,图形化操作,SBAS整个流程被拆成了几个固定步骤,每一步都有可视化中间成果,方便排查问题。加上它对哨兵一号的支持很到位,数据导入、轨道精炼、解缠这些环节基本都做成了"点几下鼠标"就能跑完的状态。
有一点我要提醒:SARscape的算法思想其实和GAMMA/ISCE是相通的,所以哪怕你以后换开源方案,处理思路和参数理解依然适用。这也是为什么我建议新手先用SARscape把全流程跑通一遍,再决定要不要深入底层代码。
2. 数据准备:下载、组织、校验
2.1 需要哪些数据(影像、精密轨道、DEM)
做SBAS-InSAR,准备数据这一步至少占整个流程30%的精力。别嫌烦,数据没准备好,后面处理全是白费功。
第一是SLC影像。哨兵一号的IW模式(干涉宽幅)是形变监测最常用的,分辨率5m×20m,幅宽250km。建议获取同一轨道号、同一方向(升轨或降轨)的连续时间序列影像,数量最少12景,最好15景以上。景数太少,干涉组合和时序反演都会受限。
第二是精密轨道数据。哨兵一号下载的时候会带一个粗略轨道(内嵌在元数据里),但做干涉最好还是加一个POD精密轨道产品(AUX_POEORC版本,按需下载)。SARscape里设置好精密轨道目录后,导入SLC时能自动匹配轨道文件,把轨道误差对干涉条纹的影响降到最低。
第三是外部DEM,主要用于干涉图去平地效应、地形相位模拟和地理编码。我一般用SRTM 30米分辨率,SARscape的流程里可以直接选择"自动从网上下载或本地已有DEM"。如果你的研究区地形起伏很大,可以换ALOS World 3D 30米或者更高分辨率的DEM,效果会更稳。
第四是GACOS大气改正数据(可选,但强烈推荐)。GACOS是基于ECMWF气象再分析数据生成的对流层延迟栅格,能有效消弱大气水汽引起的相位延迟。有的处理教程直接跳过,但其实在气象活跃或者地形高差大的区域,是否做GACOS改正,结果差别很大。这个后面在"常见问题"里专门说,因为我碰到太多人问"ENVI的SARscape里没有GACOS怎么办"。
2.2 数据组织与规范(路径、格式、主影像选择前的基线检查)
准备数据的时候,建议把原始数据统一放到一个纯英文路径的目录下,比如F:\SBAS_data\raw\。文件夹名和影像文件名不要出现中文、空格、括号,更不要放在网盘同步目录里。SARscape对ASCII字符路径有严格要求,很多莫名其妙的"process unexpectedly terminated"其实就是路径问题。
哨兵一号SLC数据一般下载下来是ZIP压缩包,不用解压也能直接导入,但导入时最好保持压缩包名字是欧空局官方命名格式(如S1A_IW_SLC__1SDV_20240101T...zip),这样SARscape能正确解析轨道号、日期、极化信息。我个人习惯是下载后先不解压,用一个小脚本把一个时间段内的ZIP统一拷贝到同一目录,做好日期清单,再一次性导入。
导入之前,还要做一个最小质控:检查影像的轨道号、方向、极化是否一致,时间间隔是否有明显缺帧。这一步可以用ENVI的文件浏览器直接打开,或者简单看一眼文件名就能判断。
等到导入完成后,不要急着跑流程。SARscape里有一项"基线估算"(Generate Baseline),输入主影像和所有从影像后,会自动生成时空基线分布图。这份基线图能帮你判断当前这批数据适不适合做SBAS——如果大部分干涉对的空间基线超过300米,或者时间基线分布极不均匀,建议删掉一些坏影像重新组合。选主影像时,SARscape会给出建议(通常推荐时间序列中部某景,使得所有干涉对的整体相干性最高),我一般会优先采纳它的推荐,再把个别基线特别离谱的景从名单里剔掉。
3. 环境搭建:SARscape安装与基础配置要点
3.1 ENVI与SARscape版本匹配
安装SARscape最重要的一件事就是版本匹配。它不是独立程序,而是作为ENVI的插件运行,ENVI主版本和SARscape模块版本必须对应。常见组合比如ENVI 5.3配SARscape 5.2.6,ENVI 5.6配SARscape 5.7(这只是一个示例,具体版本号以购买授权时的说明为准)。如果你装了ENVI 2022但SARscape还是老版本,打开ENVI后Toolbox里根本找不到SARscape图标,或者点击后直接无响应。
安装流程一般是这样:
- 先装好对应版本的ENVI。
- 关闭ENVI,以管理员身份运行SARscape安装包。
- 安装过程中选择ENVI安装目录,程序会自动注册模块文件。
- 把License文件放到SARscape安装目录的
license文件夹里(具体方式以官方说明为准)。 - 启动ENVI,看到
SARscape菜单出现在菜单栏,并且点击初始化后能加载底板,才算成功。
如果你是第一次装,强烈建议在磁盘充足的位置安装,因为SBAS处理会产生大量临时文件和中间结果,特别是干涉图和解缠图,动辄几百GB都不是夸张。临时目录默认一般指向系统盘(比如C:\SARscape_Temp),建议把它改到工作盘的大空目录里——改路径在SARscape Preferences里,里面还可以设置数据并行计算的核数、默认DEM、轨道目录等。
3.2 安装后最容易出的几个问题
装完后打开ENVI没有SARscape菜单,是最常见的情况。排查顺序我建议这么做:先看安装目录是否生成了对应版本的文件夹,再看License文件是否放对位置,最后确认ENVI版本与SARscape版本是否在官方支持矩阵内。三者都没问题时,可以试试删除ENVI的AppData缓存目录重启。
另一个高频问题是"SARscape process unexpectedly terminated"。这个报错很笼统,但80%的原因是:磁盘空间不足、输入路径错误、内存不够、或者处理过程中读到了坏数据。解决办法:去工作区里找到SARscape_Int日志文件(一般是工程目录下的Log或错误弹窗里显示的日志路径),打开后拉到末尾,能看到更具体的错误描述。比如某个文件的指针找不到、某块内存无法分配等。日志里通常会定位到是导入的那一步出问题还是在干涉计算中出问题,再针对性处理。
4. 主流程实操:从SLC到形变时间序列图
4.1 数据导入与基线估算
正式流程第一步是导入数据。菜单路径:SARscape -> Import Data -> SI/S1 -> Single SLC(版本不同名称略有差异,但整体结构一致)。选择你的ZIP文件目录或已经人工目录匹配的SLC文件,设置好极化(通常选VV,哨兵默认发射的是VV,可选VH做辅助分析但没必要铺开),输出目录选一个纯英文路径。导入完成后会生成两个核心文件:.slc和.sml参数文件。.sml里存了精确轨道、时间戳、多普勒中心频率等,后面所有干涉计算靠的都是它。
导入完成后菜单栏执行SARscape -> Interferometry -> Generate Baseline,在弹出的面板里添加全部SLC(主影像可以选某一条指定的,也可以留空让程序推荐)。SARscape会自动计算所有影像之间的时间基线和空间基线,生成一个基线可视化图,同时给出一份.ble基线文件。这一步要仔细看的是:你的干涉对是否覆盖了完整的监测时间段?有没有因为基线太长导致某些干涉对会废掉?如果有些影像和主影像的空间基线超过临界基线太多(哨兵一般是几百米级别),可以考虑删除该景影像。
4.2 干涉处理(配准—滤波—解缠)
干涉处理是整个流程里计算量最大、参数最敏感的部分。SARscape的干涉工作流一般包含:配准(Coregistration)、干涉图生成(Interferogram Generation)、去平地效应(Flat Earth Removal)、地形相位去除(DEM Removal)、滤波(Filtering)、相干性计算(Coherence Generation)。
配准环节,SARscape会选取主影像作为参考,把所有从影像精确配准到亚像素精度。这块通常不需要人工干预,如果配准报错,基本是影像质量问题或精密轨道没匹配上。
干涉图生成之后,你会看到密集的干涉条纹。这时候要用滤波降低噪斑。SARscape默认用Goldstein滤波,滤波窗口大小直接影响条纹平滑程度:窗口太小(如4像素)噪声压不掉,窗口太大(如64像素)会把细节条纹磨平、相位解缠质量反而下降。我实测下来,哨兵一号干涉图用32像素的Goldstein滤波最划算,在保持空间细节和压制噪声之间取得了平衡。
解缠是整个流程最容易"翻车"的一步。SARscape解缠模块常用MCF(Minimum Cost Flow)算法,它是在相干性图上规划积分路径,对低相干区域和孤岛区域尤其要小心。解缠之前必须设置几个关键参数:
- 解缠相干性阈值(Minimum Coherence threshold):一般设为0.2~0.25,低于这个值的像素不参与解缠。阈值设太高会丢失大片形变区;设太低则会把噪声也解缠进去,产生"解缠跳变"。
- 解缠网格大小(Unwrapping grid size):建议10m左右(与数据分辨率匹配)。网格太大会降低相位解缠精度,太小会显著增加计算时间。
- 输出解缠结果和相干性图,后面轨道精炼要用。
解缠完成后立即看中间成果:如果解缠图里出现大量2π跳变的"椒盐噪声"或者阶梯状断崖,说明解缠失败,需要调整上面参数重跑,不要带着错误的解缠结果往下走。
4.3 轨道精炼与重去平
解缠完并不能直接反演,还需要做轨道精炼(Refine)和重去平(Re-flatten)。这一步的目的是根据某个"稳定参考点"或"稳定区域",把残余的轨道误差相位和部分全局倾斜相位从解缠图里去除。
做法是选取若干个地面控制点(Ground Control Points,GCP)。GCP选得好不好,直接影响最终形变速率的绝对值。我的选择原则是:
- 点要选在多年无显著形变的区域,比如远离城市沉降漏斗的郊区、基岩裸露区。
- 点在空间上要均匀分布,不要全挤在一个角落。
- 点处的相干性要高(通常要求大于0.7),避免选在河流、植被茂密、雷达阴影和叠掩区。
- 不要选在干涉条纹密集的地方,那种地方往往形变梯度大,不适合做参考。
这里有个很实用的操作技巧:在SARscape的轨道精炼面板里,可以先自动生成一组候选GCP,然后人工剔除明显不合理的点。剔除时可以用相位解缠图和平均强度图叠加看,把位于河道和山体阴影区的点删掉。理想情况下保留6~10个GCP就够,点太多反而容易把局部的残余大气相位当轨道误差拟合掉。
精炼结束后,SARscape会重新生成"重去平"后的干涉图和解缠图,这些才是之后反演的输入。
4.4 SBAS反演(两轮反演与大气相位估计)
SBAS反演在SARscape里被拆成两部分:第一步叫"Model Inversion(线性形变反演)",第二步是"Time Series Model Inversion(时间序列/非线性形变反演)"。
第一步线性反演,输入是重去平后的解缠相位,输出是平均形变速率图(形变速率,mm/year)和残余地形相位(即DEM误差)。这一步里需要设置形变模型,常见的是线性模型(constant velocity),意思是假设整个时间段里地表按恒定速率移动。如果研究区有明确加速或减速态势,也可以选高阶模型,但数据量和信噪比不足时,线性模型更鲁棒。
第二步时间序列反演,是SBAS流程里最关键的一步。这一步要先做"大气相位估计与去除"(Atmosphere Phase Screen,APS)。大气相位在时间域表现为高频(几天到几周变化),在空间域表现为低频(几公里到几十公里的尺度),因此可以用时间高通+空间低通滤波从形变相位里分离出来。SARscape在反演面板中会自动完成一次初始反演,得到每个时间节点的残余相位,再通过滤波把APS估算出来,从时间序列结果里剔除。
这一步最需要人工观察的是输出结果:
- 先看平均形变速率图,值域是否合理,有没有集中在某个极端值(比如正负几百毫米)的现象。
- 再看各期累积形变图,有没有出现明显的"相位跳变"条纹,如果有,说明解缠或者反演环节还有残留问题。
另外,时间序列反演时会输出每个点的形变参数拟合优度(R²或残差),可以用来做质控筛选,剔除拟合很差的像素点,避免最终结果被个别噪声点污染。
如果没有外部GACOS数据,大气相位分离要更谨慎。我的建议是:在APS滤波参数上,把时间窗口设置得稍大些(比如滤波窗口包含6个以上采集周期),空间窗口设置小些(比如5km量级),尽量不把真实形变信号误删掉。同时对比一下去掉大气改正前后的时间序列,如果变化不超过毫米级,说明研究区大气影响不大,不用过度担心。
4.5 地理编码与结果导出
反演得到的是雷达坐标系(SAR几何)下的结果,需要地理编码(Geocoding)转换到地图投影坐标系。SARscape会利用外部DEM和卫星轨道参数,把形变速率图、累积形变图、相干性图统一重投影到WGS84经纬度坐标(或UTM投影)。
地理编码时有一个容易忽略的细节:输出像素大小。SARscape默认可能按原始SLC分辨率20m导出,但对于形变速率产品,我们通常按10m或15m输出,分辨率略粗反而能压低噪声让结果更平滑。导出格式建议选GeoTIFF,方便进ArcGIS/QGIS做进一步分析。导出后通过像元统计检查数据范围:沉降区应该是负值(雷达视线方向远离卫星),抬升区是正值,整体速率范围应该在-50~50mm/year以内才合理。
导出完成后,我会顺手生成一张检测时间跨度内的最大累计形变图和平均速率图,结合同期降水或工程活动信息做解释性分析。这一步不是SBAS必需的,但确实能让成果直接用起来,不至于只停留在"图很好看"的阶段。
5. 高频问题实录与排查技巧
5.1 处理中断(SARscape process unexpectedly terminated)怎么排查
这个报错可以说伴随每个SARscape使用者的整个生命周期,遇到不用慌,按顺序排查:
- 第一看磁盘剩余空间:SBAS中间产物非常庞大,尤其是干涉图和临时栅格,处理一个20景的Sentinel-1数据集,临时文件轻松超过100GB。工作盘空闲小于50GB就随时可能崩。
- 第二看目录路径:工程目录、数据文件、输出目录是否都有中文或空格?建议统一改成
S1_IW_2024这样的命名方式。 - 第三看日志位置:SARscape报错窗口里通常会指定一个日志文件路径,打开日志看最后的ERROR关键行,它一般指向具体是哪个数据文件读取失败。
- 第四看系统资源:内存8GB以下跑SBAS会比较吃力,处理时建议关闭其他重型软件;SARscape在Preferences里可以限制并行核数,避免内存被榨干。
还有个小技巧:处理大数据集时,不要试图一次性把几十个干涉对全部在一个批次里跑完。我习惯把干涉对按时间窗口分批发处理,每批次最多10~12对。虽然步骤繁琐一些,但单个任务失败后只要重跑失败的干涉对就行,不会牵连全局。
5.2 没有GACOS时怎么降低大气影响
GACOS(Generic Atmospheric Correction Online Service)是对流层大气改正的标准外部数据源,但不少人会发现ENVI插件版的SARscape工具面板里没有GACOS模块,那说明这个模块没有被集成进来,或者是授权版本不带联网获取功能。处理办法有三个:
- 第一个办法是外部修正后再进入SBAS。从GACOS官网下载对应时间段的ZTD(天顶总延迟)栅格,用ENVI的波段运算把相位转换成延迟量,配合气象再分析数据自己做一个地形对流层延迟改正,把SLC的相位减去大气延迟后再进入SARscape干涉流程。这个方法精度高但工作量大。
- 第二个办法是SARscape内部的大气APS滤波。就是我们前面说的,在时间序列反演中利用时间高通+空间低通滤波分离大气。这个方法不依赖外部数据,能滤掉大部分大气信号,但对空间尺度较大的系统性大气偏差(比如研究区跨度特别大时)效果有限。
- 第三个办法是选择气象条件相对稳定(干燥、晴朗)的影像时段,尽量避免多雨多雾季节的影像。这个属于"处理前规避",同样能降低大气相位占比。
实际项目中,东部季风区和山区做SBAS,我推荐至少用第二个办法,同时把研究区控制在50km×50km以内,可显著减少大气空间梯度的干扰。如果跨幅超过100km,那就尽量想办法解决外部大气改正数据,否则结果里可能残留系统的虚假形变梯度。
5.3 其它高频报错与避坑提示
第二个高频问题是"解缠结果全是噪点/大片不连续":这种情况通常是因为相干性太低。可以先看相干性图,如果研究区内平均相干性低于0.3,说明干涉对本身质量差,问题大概率出在原始数据或基线组合上。建议缩短时间基线窗口(比如把最大时间基线从90天缩短到60天),或者增加影像数量,提高短干涉对的占比。
第三个高频问题是"反演得到的速度场出现明显的条带":这往往是轨道误差没被完全去掉,或者是GCP选取不当。回头检查轨道精炼步骤,看看残余相位是否还保留着明显的二次曲面趋势。如果GCP分布在研究区一侧,另一侧的轨道误差会表现为"远端正负相间"的条带,解决办法是重置GCP并保证均匀覆盖。
还有一个很多人忽略的点:SBAS结果对主影像非常敏感。如果你把主影像从某个中间时间换到最早或最晚一景,形变速率结果可能相差1~2mm/year。所以建议在实际项目里固定主影像选取规则(比如利用SARscape推荐结果或时间中心),保证结果可复现。
6. 个人经验补充
这套流程我反复用过很多次,最大的体会是:SBAS-InSAR不难在点按钮,难在每一步中间结果都要用"质控思维"去检查。宁可每步多花20分钟看图、看统计、看日志,也不要一股脑把所有处理跑完再回头找问题。跑完后最好把平均形变速率图与同期水准测量或GNSS结果对照一下,给自己一个"量级和趋势都对得上"的结论——这既是对数据负责,也是后面写报告和发文章最重要的支撑材料。
最后再分享一个小技巧:在SARscape里把中间产品(尤其干涉图、相干性图、解缠图)按日期重命名并定期归档,不要覆盖。因为你永远不知道几个月后返工时,需要回去看哪一个干涉对的相位图。把这些目录管理习惯养成后,整个流程的效率会有质的提升。