资讯动态

Sentinel-1 burst数据下载与InSAR处理全流程指南

发布时间:2026/10/2 5:45:07 来源:尧图企业网站定制
前阵子接了个带状测区的InSAR监测任务测区其实只有几十平方公里按传统思路去公共平台下载了一景完整的Sentinel-1 IW模式SLC单景数据量动辄好几个GB。等导入SNAP一看才发现真正覆盖测区的只有某个子条带中间几个burst其余部分全在白白占用磁盘和内存配准时还容易把不相干的遥远区域一起卷进去反而拖慢了整个流程。后来认真把burst的概念、下载方式和处理链路理了一遍整个效率完全不一样。这篇就围绕哨兵一号burst数据的下载和处理把我实际验证过的流程和踩过的坑完整写一遍适合刚接触InSAR、对TOPS模式还不熟的读者也适合已经跑过全幅流程、想优化批处理效率的从业者。1. 先搞清楚Sentinel-1的burst到底是什么1.1 从成像机制上理解burst很多人第一次听到burst会以为它只是把一整景SLC按条带切成小块像谷歌地图的瓦片一样。这个理解方向对但忽略了关键机制。Sentinel-1的干涉宽幅模式IW用的是TOPS成像方式全称是Terrain Observation with Progressive Scans意思是波束在方位向不是固定不动地连续照射而是随着平台运动在多个子条带之间快速切换每次切换的成像段就是一个burst。更直白一点说卫星在飞行过程中天线波束像探照灯一样从后向前扫过地面扫完一个方位向区段就切到相邻子条带继续扫。IW模式分成IW1、IW2、IW3三个子条带每个子条带在方位向上会形成一串burst。每个burst并不是孤立存在的一段信号它在方位向上有独立的多普勒历史burst与burst之间还留着很短的重复观测区域。这个重叠区不是冗余而是后面做精细配准时用来估计方位向偏移的重要素材。理解了这一点就知道burst不是一个简单切片它是TOPS体制下最自然的处理单元。传统条带模式SAR里相邻像元之间可以当作连续场景处理但在TOPS数据里不同burst的方位向多普勒中心是持续变化的如果把它当成一条连续带去做常规干涉处理相位上很容易出问题。1.2 burst在L1 SLC产品里长什么样从文件结构上看一份Sentinel-1 L1 SLC产品是一个SAFE格式文件夹里面通常包含annotation、measurement、calibration这几个目录还有最外层的manifest.safe。打开measurement目录你会看到类似s1a-iw1-slc-vv-20230101t123456-20230101t123521-...-001.tiff这样的文件这里面就对应一个子条带的一整串burst数据。注意这里一个tiff文件是整个IW1子条带的burst数据串在一起并不是一个burst一个tiff。真正标识每个burst的信息在annotation目录下对应的xml文件里。每个子条带有一个annotation文件里面包含了burstList每个burst有独立的azimuthTime、零多普勒时间、方位向起始/结束行号以及几何定位信息。所以你要判断某几个burst是否覆盖你的测区不能靠肉眼看tiff最靠谱的方式是解析annotation里的burst列表结合测区经纬度去比对。这里还要提醒一点SNAP里读SAFE产品时burst编号在界面上往往默认从1开始但不少底层参数和脚本接口里是从0开始计数。同一个burst两套编号体系可能差一个导致你选的burst整体偏移了一个。后面批处理时我会专门再说这个问题。1.3 什么时候需要按burst处理并不是所有场景都必须先切burst。如果你做的是大范围地表形变需要的是整景甚至多景拼接的连续覆盖那全幅处理或者大范围拼接是合理的。但如果你只是做一个小区域的形变场或者你的测区本身是河道、铁路、管道这类条带形状按burst处理能省掉大量无效计算。另外在SBAS这类时序InSAR方法里burst也是一种很自然的组织方式。按burst去做干涉像对选择、相位解缠可以避免远处的失相干区域干扰局部相位网络。实际项目中我一般会先把测区对应的子条带和burst范围固定下来之后每次新数据进来都只处理固定的burst组合。这样数据管理清晰批处理的参数也稳定遇到异常像元时更容易定位问题。2. burst数据的检索与下载2.1 ASF Vertex先画AOI再确认burst归属我平时用得最多的下载入口是ASF的Vertex平台大家可以直接在浏览器里搜索ASF Vertex进入。这个平台比较友好的一点是支持直接画多边形区域进行检索拖一个测区多边形再选好传感器和产品类型就能列出覆盖该区域的Sentinel-1影像列表。具体操作上我会在Search Criteria里把Mission选为Sentinel-1Product Type选为SLCBeam Mode选为IW。然后通过Date Range限定时间范围用AOI工具画一个相对紧致的测区范围尽量别用那种特别大的矩形框。画得越小返回的候选影像越精准后续下载列表也更好判断。有一点必须明确ASF目前返回的产品级别基本还是整景SLC到底你这块测区命中的是哪几个burst平台结果列表里并不会直接给你切好。我的习惯是拿到候选景列表后先下载annotation文件或直接在SNAP里读一下burst结构再决定要不要整景下载。虽然多了一步判断但能避免下载不覆盖测区的影像也可以避免漏掉相邻景的数据。2.2 Copernicus Data Space Ecosystem适合批量取数除了ASF欧洲的Copernicus Data Space Ecosystem也是重要的下载来源尤其当你需要按产品ID精确拉取数据或者做批量自动化下载时它提供的API方式会比网页点击更顺手。它的检索服务支持按采集时间、轨道号、产品类型等条件过滤返回结果里可以直接拿到产品下载链接。我自己在批处理场景下的习惯是先用网页检索确认产品真实性拿到一串产品ID再写脚本循环下载。这里要注意不同平台的下载链接有效期和鉴权方式不一样批量下载脚本里一定要做好断点续传和重试机制。Sentinel-1 SLC文件普遍在1GB以上双极化甚至能到好几个GB网络一抖就可能断了没有断点续传的话非常痛苦。Copernicus Data Space近年也支持更细粒度的数据访问方式但接口变化比较快。对于一般项目我不建议把处理链强绑定在某个平台的burst切片服务上因为一旦接口调整整个自动化流程都要跟着改。把下载环节固定在整景SLC把burst切分放在本地处理链里反而是更稳定的方案。2.3 下载配套文件别漏下载数据时最容易犯的错误是只盯着measurement里的tiff文件。SLC产品真正好用必须具备完整的annotation、calibration和manifest.safe文件。尤其是用SNAP处理时程序默认从manifest.safe出发按元数据读产品如果你只拿了一个tiff后面任何一个环节都会失败。从ASF或Copernicus平台下载时通常拿到的是打包好的zip或者SAFE文件夹这些配套文件是自动带齐的。但如果你是通过API按对象存储路径逐个文件拉取那就必须把整个产品目录都下载下来别自作聪明只下某个子文件。另外ASF下载页面里有时候会提供SLC和GRD两种选择做干涉处理务必选SLC不要为了图文件小选GRDGRD已经经过多视和投影丢失了相位细节没法做InSAR。3. 拆burst从整景SLC到目标burst3.1 SNAP里的S-1 TOPS Split操作拿到整景SLC之后第一步通常不是直接做干涉而是先做burst切分。在SNAP桌面版里打开产品之后右键选择“S-1 TOPS Split”会弹出参数面板。你需要在里面选择子条带比如IW1、IW2还是IW3然后选择要保留的burst范围。这里重点说一下子条带和burst的对应关系。一个IW子条带里通常有一串burst但三个子条带的burst编号并不是同一个地面位置。比如IW2的第4个burst和IW1的第4个burst在地面上是不同位置的。你要是拿AOI范围去套必须逐个子条带分别判断不要想当然认为“第4个”都对应同一块地。参数面板里还能选择极化通道。如果做常规形变监测VV极化就够了如果是双极化实验可以保留VV和VH但后续处理数据量会明显增加。我自己的建议是能做单极化解决的就别贪多少一个极化通道整个批处理时间能省下不少。完成Split后SNAP会输出一个新的产品里面只包含你选的burst。值得注意的是即便你选择了多个burst输出产品中burst与burst之间仍然保留着原始的重叠区并没有做无缝拼接。这个状态适合继续做干涉处理不要过早把它们合并成一张连续影像。3.2 用Graph Builder和gpt做批处理当数据量变成几十景甚至上百景时不可能每景都在GUI界面里点一遍Split。SNAP提供了gpt命令行工具配合Graph Builder导出的xml处理图可以做批量处理。我建议的处理顺序是Read读取SAFEApply-Orbit-File精化轨道S-1 TOPS Split切分burst最后Write输出。到这里很多人会纠结gpt命令里的算子名和参数名其实最好的办法不是背参数而是先在Graph Builder里手动拖一遍流程把参数配置好然后导出xml。不同SNAP版本的算子名可能有差异直接导出的xml里是什么就用什么。比如有的版本里这个split算子在xml里写的是TOPSAR-Split有的版本可能是S1TOPSAR-Split我见过项目里因为版本问题导致批处理脚本全部失效的情况。导出的xml大体是这个结构graph idburst_split version1.0/version node idread operatorRead/operator parameters file${source}/file /parameters /node node idapply-orbit operatorApply-Orbit-File/operator sources sourceProducts refidread/ /sources /node node idsplit operatorS1TOPSAR-Split/operator sources sourceProducts refidapply-orbit/ /sources parameters subswathIW2/subswath burstNumber3,4,5/burstNumber polarisationsVV/polarisations /parameters /node node idwrite operatorWrite/operator sources sourceProducts refidsplit/ /sources parameters file${output}/file /parameters /node /graph其中burstNumber这个参数名在不同版本里也可能叫bursts所以还是那句话以你实际导出的xml为准。批处理命令可以写成gpt burst_split.xml -Ssource/data/S1A_IW_SLC__...SAFE -Poutput/data/burst_out.dim在Linux服务器上跑批处理时建议给gpt分配足够的堆内存可以在gpt命令前设置SNAP_CLIENTS_MAX_MEMORY或修改sNAP.conf里的default-memory参数。burst产品本身不大但整景SLC读入时内存峰值很高我遇到过内存给太小导致进程被系统杀掉的情况排查了半天才发现是JVM参数没调。3.3 用Python脚本核对burst覆盖如果测区范围不是正好跟某个burst编号重合你就需要一份足够准确的burst位置信息。这个信息可以从annotation文件里读出来。我常用的一个Python思路是解析annotation xml将每个burst的中心经纬度和方位向时间提取出来再和测区多边形做空间关系判断。import xml.etree.ElementTree as ET tree ET.parse(annotation/s1a-iw1-slc-vv-20230101t123456-...-001.xml) root tree.getroot() bursts [] for burst in root.iter(burst): info {} for child in burst: tag child.tag.split(})[-1] if tag azimuthTime: info[azimuthTime] child.text elif tag firstValidSample: info[firstValidSample] child.text elif tag lastValidSample: info[lastValidSample] child.text bursts.append(info) print(burst count:, len(bursts))这个脚本的重点不在代码本身而在你得到burst列表之后要把它和真实地面位置对应起来。annotation里除了burst标签还有geolocationGrid信息记录了每个burst在不同方位向和距离向采样点的经纬度。你可以直接用这些点画多边形然后用GIS库去判断测区是否落在里面。这样做比在SNAP里肉眼找burst编号要靠谱得多尤其是当你的测区正好落在两个burst交界处时脚本能明确告诉你到底需要保留哪几个burst。4. burst级InSAR处理从配准到拼接4.1 为什么全幅干涉在burst场景下会很“危险”很多人觉得既然SLC都下载了直接把整景拿去干涉不就行了何必先拆burst这里的问题出在TOPS模式的配准精度上。传统条带SAR在两个SLC之间做像元偏移配准精度达到十分之一像元左右就能得到不错的干涉图。但TOPS模式里burst内方位向多普勒中心是持续变化的如果两景数据在方位向上存在哪怕很小的配准误差干涉相位就会出现一个沿方位向变化的斜坡误差。尤其在burst边界附近这种误差会表现为明显的相位跳变后续相位解缠会把跳变当成真实形变信号去解结果就是整片解缠结果失真。所以做Sentinel-1 IW干涉通常不只做常规像元配准还要在burst重叠区做更精细的估计利用增强谱分集方法把方位向配准误差压到非常小的量级。这个误差要求比条带模式严格得多这也是不能拿全幅数据直接套用老流程的原因。4.2 一条验证过的burst干涉链路我在SNAP里跑burst级InSAR经过验证比较稳定的处理链路是这样的Read读取两景切分后的burst产品。Apply-Orbit-File尽量选POE精密轨道。如果处理较早的数据精密轨道可能还没发布可以先拿RES轨道跑通流程后续轨道到位后再重新处理最终结果。Back-Geocoding这一步会根据DEM和轨道信息把两景数据在几何上对准需要提前下载好对应区域的SRTM或其他DEM。Enhanced Spectral Diversity利用burst重叠区进一步估计方位向偏移这是TOPS干涉里非常关键的一步不能省略。Interferogram生成干涉图。TOPS Deburst把burst维度的干涉图拼接成连续影像。多视、滤波、相位解缠按项目精度要求进行。其中第4步对很多人来说是陌生的但恰恰是解决burst边界相位跳变的要害。第一次跑这个流程时我试着跳过了ESD直接用了普通配准做干涉结果干涉图上出现了一条条沿方位向的条纹乍一看像形变梯度后来仔细对照burst边界才确认是配准残余误差。加上ESD之后这些条纹基本消失明显可靠多了。4.3 Deburst拼接时overlap怎么处理TOPS Deburst的作用是把多个burst在方位向上拼接成一张连续图像拼接位置正好落在burst重叠区。理想情况下如果配准和相位校正都做对了重叠区内的同名像元相位应该基本一致拼接后看不出接缝。但实际处理中接缝偶尔还是会冒出来。碰到这种情况我的排查顺序是先检查ESD是否执行成功再看轨道文件是否准确最后才去怀疑Deburst参数。最常见的原因是轨道状态不够精确导致Back-Geocoding和ESD的输入就有误差。换了POE轨道后大部分接缝问题都能解决。另外在做时序处理时建议每次都固定使用相同的burst范围和Deburst策略不要让不同期的数据在burst覆盖范围上有差异。否则不同时相采用的burst集合不一致拼接后的象元对应关系就会很乱后面解算形变速率时会引入额外误差。5. 实测中的避坑清单5.1 burst编号与时间索引的偏差这是我在批处理中踩过最深的一个坑。SNAP界面里显示burst编号通常从1开始但在某些脚本场景和老版本接口里burst从0开始。同一个名字同一个位置一到切换环境就错位。表面上看split成功执行了但输出的burst覆盖区域整体偏移了一个burst导致测区完全没被覆盖。我现在处理多景数据时会特意在Split输出一个很小的测试图直接叠加到GIS里跟测区边界核对一次。这个操作虽然看起来多了一步但能避免一堆数据白处理。如果你也写批处理脚本建议在xml里动态传入burst编号时先打印一遍每个burst的azimuthTime跟原始annotation里的时间做交叉验证。5.2 轨道产品没更新让处理链静默出错Sentinel-1轨道文件分两种精密的POE轨道和快速恢复的RES轨道。POE精度更高但通常要等数据获取后二十来天才能发布RES轨道时效性好适合应急处理。SNAP在Apply-Orbit-File时会尝试自动下载对应轨道如果本地网络访问轨道服务器不稳定可能下载失败但不报错或者使用了旧的RES轨道文件。这种情况很隐蔽处理流程能跑完结果看起来也正常但干涉相位精度不够。我的经验是批处理脚本里每次执行前检查一下日志里轨道的来源确认用的是哪一类轨道文件。形变监测项目如果POE已经发布就一定用POE重跑最终结果。5.3 文件系统与内存的隐形压力burst产品虽然比整景SLC小但SNAP在读取和处理SAFE目录时会频繁访问文件系统。放在机械硬盘上一次Split可能都要等很久如果放在网络盘上还容易出现读取超时。我现在的做法是原始SLC放在大容量归档盘处理中间结果和临时文件全部放到本地SSD处理完再归档回冷存储。另外SNAP是Java应用大批量处理时JVM内存一定要给足。我一般会设置为系统物理内存的一半以上但前提是确认机器上不同时跑别的重型任务。之前在一台32GB内存的机器上跑20景batch默认内存设置下直接OutOfMemory后来把堆内存调到16GB才稳定跑完。5.4 极化通道和产品版本别混同一个地区的单视复数产品可能会因为轨道、姿态或产品生成版本不同在burst边界和annotation字段上有细微差别。批处理时如果混用了不同版本的SLCESD和Deburst可能表现不稳定。我是建议在一批处理完成后记录下每个产品的绝对轨道号、相对轨道号、获取时间和产品版本这样后续复算时可以快速锁定差异来源。单极化与双极化的选择也要在项目初期定好。VV和VH的burst边界虽然一样但信噪比差异很大处理参数一般不能完全复用。如果项目只需要形变直接全链用VV最省事如果还想做一些极化交叉验证就要接受处理量翻倍的事实。最后再分享一个小操作把常用测区对应的子条带、burst编号、绝对轨道号和产品ID整理成一个CSV文件每次新数据来的时候先跑一个小脚本匹配CSV再决定下载和Split的范围。这个习惯帮我节省了大量重复判断时间也让处理链路更可控。Sentinel-1 burst数据的下载和处理本质上不是一项复杂技术而是把数据组织逻辑理清之后一切都会顺很多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑