ENVI SARscape处理哨兵一号SLC:安装配置与InSAR形变监测流程
发布时间:2026/10/28 13:58:12 锦皓数字建站

简介这份《SARscape_5.2.docx》面向使用哨兵一号数据、希望快速了解ENVI SARscape雷达处理插件的遥感学习者与从业人员重点回答插件由哪些模块组成、各模块适合什么任务以及如何按项目需求选型。文档围绕sarmap研发的SARscape 5.2展开梳理核心模块与干涉测量、极化雷达分析、时间序列分析、几何校正、辐射校正等扩展模块的用途并说明其与ENVI平台结合后可开展多源遥感数据处理。压缩包仅含1个docx文件大小约14KB篇幅轻量便于快速浏览和建立知识框架。已有1473人学习说明该主题在雷达遥感入门与业务应用中具有一定关注度。读者可借此了解哨兵一号处理流程中的关键环节、InSAR与PolSAR等方向的适用场景以及模块化配置对软硬件资源利用的意义。1. 拿到哨兵一号 SLC 却打不开问题不在数据把一景 Sentinel-1 的 SLC 拖进 ENVI屏幕上通常是一片黑底加噪点连道路轮廓都看不出来。数据没坏是 ENVI 主程序本身不认雷达复数数据得靠 SARscape 这个插件把轨道、多普勒、焦距这些成像参数接进来图像才有物理意义。SARscape 5.2 是跑在 ENVI 里的雷达图像处理扩展核心模块负责数据导入、质量检查和基础影像运算另外五个扩展模块分别覆盖干涉测量、极化分析、时间序列、几何校正与辐射校正可以按项目需要裁剪组合。它适合手里已经有哨兵一号数据、要做形变监测或地物反演的从业者也适合从光学遥感转过来、第一次碰 InSAR 的人。这份资源包里的 docx 就是围绕这套插件整理的说明配合安装包一起用能少走不少弯路。2. 装得上还要跑得通ENVI 版本对齐、模块裁剪与许可配置雷达插件和普通软件不一样它不是一个独立程序而是挂在 ENVI 上的扩展。装完之后菜单能点开、工具却是灰的或者导入数据直接报 IDL 运行时错误八成不是安装包的问题而是三方没对齐ENVI 主版本、IDL 运行时、许可文件。这一步没弄明白后面所有的干涉、解缠都是空谈所以第二章先把地基打牢再谈功能。2.1 ENVI 主版本、IDL 运行时与插件的三方对齐SARscape 的工具箱是以扩展形式注册进 ENVI 的注册路径跟着 ENVI 的大版本来。同一台机器上装了两个版本的 ENVI插件只会挂到其中一个是正常现象另一个打开自然看不到 SARscape 菜单。我一般会先把 ENVI 装完、确认能正常启动并加载一景光学影像再去装插件顺序反了容易出现注册表残留。IDL 运行时是随 ENVI 一起安装的不需要单独装但不要为了跑别的脚本去替换 IDL 目录下的运行库那是插件崩溃的常见源头。判断是否对齐看三个地方就够了ENVI 启动后主菜单有没有出现 SARscape 这一项Preferences 里能不能读到插件版本号Toolbox 里雷达相关工具是不是全部可点。三项里任意一项异常先别急着卸装重来去看安装日志里扩展注册那几行通常会直接写明目标 ENVI 路径对不对。要素检查点不对齐的典型表现ENVI 主版本插件注册到哪个大版本目录菜单出现但点开报 IDL 错误IDL 运行时随 ENVI 安装版本一致启动卡顿、部分工具灰显许可文件核心模块与已购扩展模块能导入数据InSAR 工具不可用用户配置目录是否生成并指向正确路径每次启动都提示重新配置提示装之前把 ENVI 完整启动一次再关闭确认没有残留进程否则扩展注册会写不进去。2.2 五个扩展模块按项目反推哪些必须有、哪些能省摘要里写得很清楚这套软件是「核心模块 5 个扩展模块」的结构核心模块给的是数据导入、质量检查、基础影像运算这类通用能力真正决定你能做什么的是扩展模块。很多人装完发现做不了干涉以为是破解不全其实是模块没选对。按项目反推是最省事的思路先想清楚你要的最终产品是形变图、分类图还是一张能叠底图的正射影像再倒推需要哪个模块。干涉测量模块是使用频率最高的一个两景同轨 SLC 进去干涉图、相干图、解缠相位、形变结果出来地形测绘、地表微小位移监测都靠它。极化分析模块处理多极化数据做散射机制分解森林、城市、农田的地物区分比单纯看强度阈值靠谱得多。时间序列模块是给长周期监测准备的同一轨道攒够一定数量的影像才能把大气延迟和失相干压下去算出年均速率。几何校正模块负责把斜距影像摆到正确的地理位置上没有它结果叠不上矢量底图。辐射校正模块管的是强度可比性不同时相的 GRD 要做变化检测这一环不能省。扩展模块解决什么问题典型输入缺它会卡在哪干涉测量 InSAR干涉图、形变、地形相位两景以上同轨 SLC只能看强度图做不了形变极化分析 PolSAR极化分解、散射机制识别双极化或全极化 SLC地物分类只能靠强度阈值硬切时间序列年均速率、长周期形变同轨道多时相数据集单对结果受大气和失相干干扰大几何校正地形校正、几何精化、正射SLC/GRD DEM结果和底图对不上没法出图辐射校正后向散射归一化、入射角校正GRD 强度数据不同时相强度不可比变化检测失真我一般建议新手先把核心模块加干涉测量模块跑通一整条链路从导入到地理编码形变图走完一遍再考虑加时间序列。一次性把所有模块都装上界面上工具一大堆反而不知道从哪下手出问题也定位不到具体环节。2.3 安装目录与许可的落地步骤安装过程本身不复杂麻烦的是目录规划和许可。插件的用户级配置会落在当前用户的主目录下里面存首选项、辅助数据路径、临时文件目录这个目录如果指向空间紧张的盘跑一景干涉就能把磁盘撑满。我习惯在装之前先把这个目录的位置想好装完立刻改首选项别等跑到一半才发现 C 盘红了。下面这段脚本用来在安装后做一次产物核对确认扩展目录、用户配置目录和辅助数据目录都在预期位置# 换成自己的 ENVI 安装路径和用户名 ENVI_HOME/opt/envi_install USER_HOME$HOME # 1) 扩展是否注册成功 ls -d $ENVI_HOME/extensions/sarscape* 2/dev/null \ || echo [FAIL] 未找到 SARscape 扩展目录检查是否装到了另一个 ENVI 版本下 # 2) 用户级配置目录首选项、临时目录、辅助数据都在这 ls -la $USER_HOME/.sarscape 2/dev/null \ || echo [FAIL] 用户配置目录未生成首次启动插件后会自动创建 # 3) 辅助数据子目录轨道文件和 DEM 缓存会放在这 for d in aux aux/orbits aux/dem tmp; do [ -d $USER_HOME/.sarscape/$d ] echo [OK] $d || echo [MISS] $d done # 4) 磁盘余量跑一景 SLC 干涉建议留 50G 以上 df -h $USER_HOME/.sarscape | tail -n 1这段脚本做的是四件事确认扩展挂载点、确认用户配置目录、列出辅助数据子目录、看磁盘余量。第三项里aux/orbits是后面放精密轨道文件的固定位置导入数据时插件会自动到这里找路径搞错就会出现「找不到轨道文件」的提示。最后一项别忽略SLC 是复数数据中间产物一层套一层磁盘不够是最容易被低估的翻车点。许可这块单机版直接把许可文件放到指定位置即可浮动版则要确认客户端能连上服务端的端口。判断方法很直接# 把地址和端口换成你自己的许可服务端 LIC_HOST10.0.0.10 LIC_PORT27000 timeout 3 bash -c cat /dev/null /dev/tcp/${LIC_HOST}/${LIC_PORT} \ echo [OK] 许可端口可达 \ || echo [FAIL] 端口不通先排查网络策略再看许可服务是否在跑端口通不代表许可能用但端口不通一定用不了这个判断顺序能省掉很多来回。常见的情况是插件能启动、基础工具能用一切到 InSAR 就提示模块未授权那就是许可里没有包含对应扩展模块跟安装无关别反复重装。3. 哨兵一号落地第一步SLC 导入的参数、轨道与验收导入这一步看起来只是选个文件点确定实际上是整条链路里最容易埋雷的地方。极化选错、产品类型选错、轨道文件没放对位置后面干涉图出来全是噪声你会误以为是基线太长或者失相干从头查到尾才发现是第一步就错了。这一章把导入拆成三块数据准备、参数逐项过、结果验收。3.1 解压、目录规范与精密轨道文件放置哨兵一号的 SLC 下载下来是一个压缩包解压后目录里有manifest.safe、annotation、measurement、preview几个子目录真正参与计算的是measurement里的 tiff元数据全在annotation的 xml 里。不要把这些文件改名或者单独拎出来插件的导入器是靠目录结构和 manifest 定位的拆散了就认不出。目录规范我一般按「卫星_模式_轨道号_日期」来建一景一个文件夹同一轨道的放在同一个父目录下。这样后面挑干涉对的时候按轨道号筛一遍就行不用一个个点开看元数据。# 批量解压并按轨道归拢zip 换成实际下载的文件 WORK/data/sar/s1 mkdir -p $WORK/raw $WORK/slc for z in $WORK/raw/*.zip; do base$(basename $z .zip) # 从文件名里截出相对轨道号第 5 段和日期第 6 段 orbit$(echo $base | cut -d_ -f5) date$(echo $base | cut -d_ -f6 | cut -c1-8) target$WORK/slc/${orbit}/${date} mkdir -p $target unzip -q -o $z -d $target echo [OK] $base - $target done # 校验每景的关键文件是否齐全 find $WORK/slc -name manifest.safe | while read -r m; do d$(dirname $m) n$(ls $d/measurement/*.tiff 2/dev/null | wc -l) a$(ls $d/annotation/*.xml 2/dev/null | wc -l) echo $d tiff$n xml$a done这段脚本按文件名里的轨道号和日期建目录解压后统计每景的 tiff 和 xml 数量。正常情况下 IW 模式的 SLC 一景有三个子条带tiff 和 xml 数量应该对得上如果某个目录里 tiff 是 0说明解压不完整或者下载的是 GRD 产品。按轨道归拢的好处是后面挑干涉对时能直接看出哪几景是同轨的。精密轨道文件是另一个必查项。哨兵一号的广播星历精度对干涉来说不够需要用事后发布的精密轨道文件放在用户配置目录下的aux/orbits里导入时插件会自动按时间匹配。轨道文件名里带有效时间范围放错目录或者时间对不上导入日志会提示使用广播星历这时候几何精度会明显下降基线估计也会偏。注意精密轨道通常在数据获取后一段时间才发布刚下完就处理可能还没有对应时段的轨道文件这时候要么等要么在结果里对几何精度留出余量。3.2 Import SAR Data 对话框逐项过导入对话框里的参数看着多真正需要你判断的其实就几个。传感器类型选哨兵一号产品类型按你下载的来SLC 是复数数据GRD 是已经做过多视和地距投影的强度数据两者能做的处理完全不同。SLC 保留相位能做干涉GRD 没有相位只能做强度分析和变化检测。这个选错是新手最常见的错误选错之后工具链看起来正常但干涉相关选项全是灰的。极化选择要跟数据一致。哨兵一号 IW 模式常见的是 VV 单极化或者 VVVH 双极化导入时可以只导其中一个通道也可以两个都导。做干涉只需要一个通道多导一个通道会让数据量翻倍处理时间也跟着涨。做极化分析才需要多通道而且必须是同一次成像获取的不同时相的拼在一起没有物理意义。参数建议取值说明SensorSentinel-1选错会导致轨道匹配失败Product TypeSLC / GRDSLC 保留相位可做干涉GRD 仅强度PolarizationVV干涉/ VVVH极化与下载数据保持一致不可混用Orbit FileAutomatic自动匹配精密轨道缺失时回落广播星历DEMSRTM 30m 或本地 DEM用于地形相位和地理编码覆盖范围要大于影像Cartographic ReferenceWGS84 / 本地坐标系影响输出结果的投影和叠图精度Output Resolution按多视比换算SLC 4:1 多视后约 10m 量级别硬设 1mDEM 这一项值得单独说。插件可以自动下载 SRTM 30m也可以指定本地 DEM。自动下载在有网络的环境下最省事但要注意缓存目录的磁盘占用本地 DEM 则要确认覆盖范围比影像大一圈边缘缺数据会导致地理编码后出现黑边甚至几何错位。输出分辨率不要想当然设成原始分辨率SLC 是斜距几何多视之后才有接近方形的像元硬设小分辨率只是把同样的信息重采样得更密不会增加细节。3.3 导入后的验收三张图加一个数值导入完成不等于导入正确。我一般做三项验收打开强度图看有没有条带缺失、看元数据里的入射角范围是否合理、检查轨道信息是否用的是精密星历。这三项都过了再往下走干涉流程。下面这段脚本直接读 annotation 里的 xml把关键元数据打出来跟导入日志对一遍比在界面上逐个点开看快得多import glob import xml.etree.ElementTree as ET def read_meta(safe_dir): 从哨兵一号 annotation 里抽关键成像参数 xmls glob.glob(f{safe_dir}/annotation/*.xml) if not xmls: return None # 取第一个条带的 annotation三个子条带参数基本一致 tree ET.parse(sorted(xmls)[0]) root tree.getroot() def find_text(tag): node root.find(f.//{tag}) return node.text if node is not None else N/A return { product_type: find_text(productType), polarisation: find_text(transmitterReceiverPolarisation), pass: find_text(pass), orbit_number: find_text(absoluteOrbitNumber), incidence_angle: find_text(incidenceAngleMidSwath), range_spacing: find_text(rangePixelSpacing), azimuth_spacing: find_text(azimuthPixelSpacing), } for d in sorted(glob.glob(/data/sar/s1/slc/*/*)): meta read_meta(d) if meta: print(d) for k, v in meta.items(): print(f {k:18s}: {v})这段代码解析的是标准的哨兵一号 annotation xml输出产品类型、极化方式、升降轨、绝对轨道号、中心入射角、距离向和方位向像元间距。判断依据很简单产品类型应该是 SLC极化跟你下载的一致升降轨在同一组干涉对里必须相同入射角在 IW 模式下大概二十多到四十度之间像元间距距离向两米多、方位向十几米。这几个数值对不上说明导入时参数选错了回去改比重跑整条链路划算。强度图这一项也别跳过。打开导入后的强度影像正常应该能看出海岸线、城区、山脊的明暗差异如果整幅图均匀发灰或者有明显黑条多半是某个子条带没导进来或者极化通道选错了。4. InSAR 主链路从干涉图到地理编码形变图的参数账导入正确之后干涉流程本身是标准化的主影像配准、生成干涉图、去平地效应、去地形相位、滤波、相干性估计、解缠、相位转形变、地理编码。每一步都有默认参数默认值能跑通大部分场景但要想结果可信得知道哪几个参数真正影响成败。这一章按流程顺序把参数账算清楚。4.1 干涉对筛选时间基线、空间基线与相干性干涉对选得好不好基本上决定了结果的上限。时间基线太长地表植被、农田、施工区一变相干性就掉下去解缠必错空间基线太长几何去相关严重干涉条纹糊成一片。哨兵一号的重访周期是十二天同轨数据时间间隔是十二天的整数倍短基线对通常优先选相邻的两景。空间基线没法直接从文件名看出来插件里有基线估算工具输入两景 SLC 的轨道参数就能算出垂直基线。经验上垂直基线控制在一百多米以内比较稳妥超过几百米干涉条纹会变得非常密滤波和解缠都吃力。下面是按时间基线做初筛的一个小脚本先按轨道和升降轨分组再按日期排序找相邻对import os import re from datetime import datetime def parse_name(path): 从标准命名里取日期、轨道号、升降轨 name os.path.basename(path.rstrip(/)) m re.search(r_(A|D)_(\d{3}), name) d re.search(r_(\d{8})T, name) if not (m and d): return None return { date: datetime.strptime(d.group(1), %Y%m%d), pass: m.group(1), # A 升轨 / D 降轨 track: m.group(2), # 相对轨道号 path: path, } scenes [parse_name(p) for p in os.listdir(/data/sar/s1/slc)] scenes [s for s in scenes if s] # 按 升降轨 相对轨道号 分组 groups {} for s in scenes: groups.setdefault((s[pass], s[track]), []).append(s) for key, items in groups.items(): items.sort(keylambda x: x[date]) print(f {key[0]}轨 轨道号 {key[1]}共 {len(items)} 景 ) for a, b in zip(items, items[1:]): days (b[date] - a[date]).days # 12 天的整数倍才是同轨重访其余间隔要重新核对 flag OK if days % 12 0 else CHECK print(f {a[date]:%Y-%m-%d} - {b[date]:%Y-%m-%d} {days:3d}d [{flag}])这段脚本按升降轨和相对轨道号分组同一组内按日期排序输出相邻两景的时间间隔并标记是否为十二天的整数倍。标记为 CHECK 的间隔要回去核对可能是漏了一景也可能是跨了轨道号这种情况下配准能跑但相干性会很差。脚本只做时间维度的初筛空间基线还得用插件里的基线工具补一刀两样都过筛的对才值得花时间去跑干涉。4.2 干涉工作流参数表与改法干涉工作流是插件的核心工具一次性把配准、干涉图、去平地、去地形、滤波、相干性算完。参数面板上项目很多真正需要根据场景调整的就那么几个。多视比是第一项。哨兵一号 IW 的 SLC 距离向像元两米多、方位向十几米比例差得远做多视是为了得到接近方形的像元同时抑制相位噪声。常见做法是距离向 4、方位向 1多视后像元大概十米量级兼顾分辨率和信噪比。想保留更多细节就往 2:1 调代价是噪声明显变大解缠容易断。配准方式分两种基于 DEM 的配准和基于强度的互相关配准。有现成 DEM 且覆盖完整时优先用 DEM 配准稳定且快没有 DEM 或者地形起伏剧烈就退回互相关但要确认配准精度指标在合理范围内精度不够会直接体现在干涉条纹的清晰度上。地形相位去除依赖外部 DEM这一步的 DEM 要和地理编码用的保持一致。用不同的 DEM地形相位和后续地理编码会对不上出来的形变场里混进地形残差看起来就像大范围抬升或者沉降这是很典型的一种「假信号」。参数常用取值调整方向与代价Range Looks / Azimuth Looks4 / 1调小保留细节但噪声大调大平滑但丢分辨率CoregistrationDEM-based无 DEM 或地形剧烈时改用强度互相关DEM SourceSRTM 30m / 本地 DEM需覆盖完整与地理编码保持同一份Interferogram FilterGoldstein / Adaptive噪声大用 Goldstein窗口过大会糊掉细节Filter Window32 或 64窗口越大越平滑小形变容易被抹掉Coherence Window5×5 以上窗口太小相干性估计不稳太大空间分辨率下降滤波这一步值得多说一句。滤波是双刃剑噪点压下去的同时小尺度的形变信号也会被一起平滑掉。做区域性的地面沉降滤波开大一点问题不大做单体建筑或者线性地物的形变滤波窗口就得收着来宁可留点噪声也别把要看的信号抹平了。4.3 解缠与地理编码结果怎么验相位解缠是从缠绕相位恢复绝对相位的步骤也是最玄学的一环。常用方法有最小费用流和区域增长两类前者对噪声鲁棒、整体一致性好后者速度快但在低相干区容易长歪。解缠参数里最关键是相干性阈值低于阈值的像元不参与解缠阈值设高了低相干区被大片掏空解缠相位出现空洞设低了噪声像元把误差传播出去整幅图出现台阶状的错误。地理编码是把斜距几何的结果转到地图坐标系需要 DEM 和输出投影参数。输出分辨率不要设得比多视后的像元还小那只是插值出来的假细节。地理编码完成后第一件事是把形变结果和强度底图叠在一起看如果形变异常区集中在一条笔直的边界上多半是拼接或者投影参数的问题不是真实地质信号。下面这段代码用来对地理编码后的形变栅格做一次量化检查统计有效值范围、把相位单位转成毫米、并输出直方图摘要from osgeo import gdal import numpy as np def check_deformation(tif_path, wavelength_mm55.5): 读取 SARscape 导出的地理编码形变栅格 wavelength_mm: 哨兵一号 C 波段波长约 55.5mm相位转形变用 lambda/4pi ds gdal.Open(tif_path) band ds.GetRasterBand(1) arr band.ReadAsArray().astype(np.float32) nodata band.GetNoDataValue() if nodata is not None: arr np.where(arr nodata, np.nan, arr) valid arr[np.isfinite(arr)] # 若结果以弧度存储换算成视线向毫米 disp_mm valid * wavelength_mm / (4 * np.pi) print(f有效像元占比: {valid.size / arr.size:.2%}) print(f形变范围: {disp_mm.min():.2f} ~ {disp_mm.max():.2f} mm) print(f均值/中位数: {disp_mm.mean():.2f} / {np.median(disp_mm):.2f} mm) print(f标准差: {disp_mm.std():.2f} mm) # 直方图分位数快速判断是否存在大范围偏移 for q in (1, 5, 50, 95, 99): print(f P{q:02d}: {np.percentile(disp_mm, q):.2f} mm) if __name__ __main__: check_deformation(/data/sar/out/disp_geo.tif)这段代码做了三件事读入地理编码后的形变栅格、剔除无效值、把相位换算成视线向毫米并输出分位数。判断依据是有效像元占比和分位数分布占比过低说明解缠时相干性阈值设高了或者整体失相干P1 和 P99 之间跨度如果达到几十厘米而研究区又是平地基本可以判定存在解缠跳变或者大气未校正。波长换算这里用的是 C 波段约 55.5 毫米如果你导出的是已经转好的毫米值这一步直接跳过。需要强调的是InSAR 得到的是视线向形变不是垂直沉降量。要跟水准或者其它手段比对得先做视线向到垂直向的投影投影需要入射角信息而且只在形变以垂直方向为主时成立。方向搞错量级能差出一倍多。5. 五类高发翻车从黑图到解缠台阶的排查路径前面几章讲的是怎么把流程走通这一章讲走不通的时候怎么定位。下面五条是我自己踩过、也帮别人排查过的按出现频率从高到低排。现象一导入后强度图几乎全黑或者均匀发灰看不出地物。原因通常是极化通道或者产品类型选错了比如下载的是双极化数据导入时选了一个数据里没有的通道也可能把 GRD 当成 SLC 导入。解决办法是回到 annotation 里确认实际的极化方式和产品类型重新导入不要在原数据集上反复试残留文件会干扰后续判断。现象二干涉图全是杂乱条纹相干图大面积发黑。原因分两种时间基线太长导致失相干或者配准精度不够。先看时间间隔是不是十二天的整数倍再看配准精度指标。如果是植被覆盖区在生长季十二天也救不回来这种情况换冬季影像或者换干涉对更实际硬调滤波参数只是把噪声抹平不会把信号找回来。现象三解缠结果出现大面积台阶状跳变。原因是低相干区参与了相位解缠误差向外传播。解决方向是提高相干性阈值、在解缠前对低相干区做掩膜或者调整解缠的分解层级。检查方法很直接把解缠相位和相干图叠一起看跳变边界是不是正好沿着低相干区走是的话基本可以确诊。现象四地理编码后结果与底图错位偏移量在几百米量级。原因多半是 DEM 覆盖不全或者投影参数设错。DEM 边缘缺数据会让地形校正失真投影选错会让整幅图平移。排查顺序是先换一份覆盖范围更大的 DEM 重跑地理编码如果错位消失就是 DEM 的问题如果还在回去检查输入的坐标系统和输出分辨率。现象五处理到一半磁盘写满任务中断。SLC 是复数数据中间产物包括配准后的主从影像、干涉图、滤波结果、解缠相位每一层都是整幅栅格。预留空间按单景中间产物的三到五倍估多景时间序列按景数线性放大。临时目录别放在系统盘改首选项里的临时路径比重装软件有效。提示排查时一次只改一个参数改完记下结果。同时改三四个参数跑出来好了也不知道是哪个起的作用下次照样翻车。6. 时序与批处理SBAS 参数收敛和一条自检习惯单对干涉能看一次形变事件要看长期趋势就得上时间序列。SARscape 的时间序列模块支持 SBAS 这类方法核心思路是把多景影像按基线条件组合成若干干涉对解缠后联合求解把大气延迟和轨道误差压下去最后得到年均速率。参数收敛的关键在三点干涉对的数量和连接度要够相干性阈值不要一刀切参考点的选择要落在稳定区域。干涉对连接度不够是时序结果发散的最常见原因。同一轨道至少需要十几景以上通过多主影像的方式把连接数拉起来只连相邻的两三对解缠误差没有冗余去平差速率会漂。相干性阈值我在时序里通常分两级处理先宽进把大部分像元纳入解算再用相干性做加权而不是直接按阈值砍掉一片。参考点选在硬质地面或者裸露基岩上选到农田或者填海区整幅图的速率都会跟着偏。批处理这块界面里跑十景和跑一百景是两种体验。常见做法是把同一轨道的任务串成一个流程模板用脚本按文件夹遍历调用一次排队跑完人工只需要检查中间结果。批量跑的时候一定要给每一步输出加上轨道号和日期前缀不然跑到一半中断根本分不清哪些是新的、哪些是上次残留的。下面这段脚本用来在批处理前做一次目录体检确认每景的输入文件和轨道文件都齐了再开跑#!/usr/bin/env bash # 批处理前的输入体检缺一项就跳过该景避免跑到一半中断 WORK/data/sar/s1/slc ORBIT_DIR$HOME/.sarscape/aux/orbits fail0 for d in $WORK/*/*/; do name$(basename $d) # 关键文件检查 [ -f $d/manifest.safe ] || { echo [MISS] $name manifest.safe; fail1; continue; } n$(ls $d/measurement/*.tiff 2/dev/null | wc -l) [ $n -gt 0 ] || { echo [MISS] $name measurement/tiff; fail1; continue; } # 从名称里取日期粗查该时段有没有对应轨道文件 day$(echo $name | grep -oE [0-9]{8} | head -n 1) hit$(ls $ORBIT_DIR 2/dev/null | grep -c $day || true) [ $hit -gt 0 ] echo [OK] $name 轨道命中 $hit 个 \ || echo [WARN] $name 未匹配到当日轨道文件将回落广播星历 done [ $fail -eq 0 ] echo 输入检查通过可以排队 || echo 存在缺失项先补齐再跑脚本按目录遍历检查 manifest 和 measurement 是否齐全再从目录名里截出日期到轨道目录里粗查有没有对应时段文件。命中为零的不算致命错误但会回落广播星历几何精度要打折长时序里混进这种数据速率会出现系统性偏移所以输出成 WARN 让人工确认。批处理真正的价值不是省点击而是把检查前置避免跑了六个小时在解缠那一步才报错。最后说个习惯。早期我做时序跑完直接导速率图图上一片红蓝看着挺像回事就交出去了。后来有一次把相干性图和速率图叠在一起才发现速率异常区几乎全部落在低相干带上换句话说那不是形变是噪声解缠出来的假信号。从那以后我每次跑完一景或者一批都强制先看相干性分布、再看解缠相位连续性、最后才看形变图顺序不跳。希望帮到你。资源包里的安装文件、模块说明和操作文档放在同一个网盘目录链接和提取码在资源页按自己的 ENVI 版本对号入座再动手比装完发现挂不上再回头找要省事。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。