SAR数据处理这件事,说难也难,说简单也简单。难在链路长、参数多、每一步都有坑;简单在于,只要你理解了每个环节在干什么,剩下的就是按部就班地操作。我接触Sentinel-1数据差不多有几年时间了,从最开始连轨道文件该放哪个文件夹都搞不清楚,到后来能独立跑完整个干涉测量流程,中间踩过的坑可以说能写一本小册子。这篇文章我打算把Sentinel-1 SAR数据从下载到精确配准的完整预处理流程梳理一遍,重点讲清楚每一步为什么要这么做、参数该怎么选、哪些地方容易出问题。不管你是刚接触SAR数据的研究生,还是从光学遥感转过来的从业者,只要跟着这个流程走,应该能少走不少弯路。
1. 先搞清楚Sentinel-1数据的产品层级和获取方式
1.1 不同产品级别的区别与选择逻辑
Sentinel-1的数据产品按照处理级别分为好几个层次,很多人一开始就被这些缩写搞晕了。我简单梳理一下:Level-0是原始数据,基本上用不到;Level-1分为SLC(Single Look Complex)和GRD(Ground Range Detected)两种;Level-2就是海洋产品了,做干涉的话不用考虑。
做InSAR或者需要相位信息的处理,你必须用SLC数据。SLC保留了完整的复数信息,包括幅度和相位,这是干涉测量的基础。GRD数据虽然看起来更"好看"——它是经过多视处理和地距投影的强度图像,但相位信息已经丢失了,只能做幅度分析或者变化检测。
这里有个容易犯的错误:有人拿GRD去做干涉,发现怎么都生成不了干涉图,折腾半天才发现是数据选错了。所以记住一个原则——只要你的后续处理涉及相位,就必须从SLC开始。
SLC数据还分不同的极化方式,Sentinel-1支持VV和VH两种极化(有些模式只有VV)。做地表形变监测一般用VV极化,因为它在大多数地表类型上回波信号更强。如果是做植被分析,VH可能更有用。这个选择在下载数据的时候就要确定好。
1.2 数据下载渠道与注意事项
下载Sentinel-1数据有几个常用渠道,我平时用得比较多的是欧空局的Copernicus Data Space Ecosystem(原来叫SciHub,现在迁移了)。注册账号是免费的,搜索界面也比较直观。另一个选择是通过ASF(Alaska Satellite Facility)下载,速度有时候会更快一些。
下载之前有几个关键点需要注意:
- 确定研究区域和时间范围:Sentinel-1的重访周期是6天(两颗星联合)或12天(单颗星),做时序分析的话要确保有足够的影像数量。
- 选择正确的轨道方向:升轨(Ascending)和降轨(Descending)的几何不同,同一地区两种轨道的数据不能混用做干涉。一般建议选定一种轨道方向后保持一致。
- 注意帧号(Frame)的一致性:同一轨道上相邻帧之间有重叠,如果你研究区域跨了两帧,要么分别处理再拼接,要么下载时确保覆盖完整。
- 检查数据质量标识:下载页面通常会标注数据的质量状态,有些因为轨道机动或者仪器异常会有标记,尽量避开这些数据。
下载下来的数据是一个.zip压缩包,解压后是一个以.SAFE为后缀的文件夹。这个文件夹里面包含了manifest.safe文件、测量数据(measurement)、轨道信息、标注文件等多个子目录。不要随意修改这个文件夹的内部结构,SNAP读取的时候依赖这些文件的相对路径关系。
提示:下载数据的同时,建议把对应的精密轨道文件(POD Precise Orbit Ephemerides)也一并下载好。虽然SNAP可以自动下载轨道文件,但有时候网络不稳定会导致下载失败,手动下载放在指定目录里更保险。
2. SNAP环境配置与数据导入的实操细节
2.1 SNAP安装与内存配置的坑
SNAP(Sentinel Application Platform)是欧空局开发的免费SAR处理软件,目前做Sentinel-1数据预处理基本离不开它。安装过程本身不复杂,从官网下载对应操作系统的安装包,一路下一步就行。但安装完之后有一个必须调整的地方——内存分配。
默认情况下SNAP只分配了大约1GB的堆内存,处理SLC数据的时候动不动就内存溢出。你需要找到SNAP安装目录下的etc/snap.conf文件(Windows下是snap.conf,Linux下可能在bin目录),修改里面的default_options参数:
-J-Xmx8G -J-Xms2G这里的Xmx是最大堆内存,Xms是初始堆内存。具体给多少取决于你的机器配置,一般建议至少给8GB,处理大范围数据的话16GB甚至更多也不过分。但注意不要超过物理内存的70%左右,否则操作系统本身会变得很卡。
还有一个容易忽略的点:SNAP的临时文件目录默认在用户目录下,处理大数据的时候临时文件可能占几十GB。如果你的系统盘空间不够,建议在snap.conf里把临时目录改到空间更大的盘:
-Djava.io.tmpdir=/path/to/your/tmpdir2.2 数据导入与轨道文件应用
打开SNAP之后,通过File > Open Product导入解压后的.SAFE文件夹。导入成功后你会在产品树里看到一系列波段和元数据。第一步操作是应用精密轨道文件(Apply Orbit File)。
为什么要做这一步?Sentinel-1数据自带的轨道信息是快速轨道(Restituted Orbit),精度在10cm左右。而精密轨道文件(Precise Orbit)的精度可以达到5cm以内。对于干涉测量来说,轨道误差会直接转化为相位误差,在干涉图上表现为大尺度的条纹。所以这一步不能省。
在SNAP里的操作路径是:Radar > Apply Orbit File。在弹出的对话框中,Orbit State Vector选择Sentinel Precise (Auto Download),这样SNAP会自动从网上获取最新的精密轨道文件。如果自动下载失败,你可以手动从欧空局网站下载轨道文件(.EOF格式),放到SNAP的轨道文件目录下,然后选择Sentinel Precise让它从本地读取。
注意:精密轨道文件通常在数据获取后大约2周才会发布。如果你处理的是刚下载的最新数据,可能还没有精密轨道可用,这时候只能用快速轨道,但要在后续处理中注意轨道误差的影响。
2.3 子区域裁剪:什么时候该做,什么时候不该做
如果你的研究区域只是整景影像的一小部分,做子区域裁剪(Subset)可以大幅减少后续处理的数据量和时间。在SNAP里通过Raster > Subset来操作,你可以手动框选区域,也可以输入经纬度范围。
但这里有个经验之谈:不要在预处理的最开始就做裁剪。原因是轨道文件应用、辐射定标这些步骤需要完整的影像信息来保证精度。我一般建议在完成辐射定标和去斑之后、做干涉之前再裁剪。当然,如果你机器内存实在有限,提前裁剪也是可以接受的妥协方案,但要注意裁剪区域要留足够的余量,避免边缘效应影响核心区域。
裁剪的时候还有一个细节:尽量让裁剪区域的边界避开地形剧烈变化的地方。因为后续做配准和干涉的时候,地形起伏大的区域容易产生配准误差,如果你的研究区边界正好切在山脊上,可能会引入不必要的麻烦。
3. 辐射定标与热噪声去除:被很多人跳过的关键步骤
3.1 辐射定标到底在做什么
辐射定标(Radiometric Calibration)的目的是把SAR影像的原始DN值转换成具有物理意义的后向散射系数。Sentinel-1的SLC数据存储的是复数,定标之后得到的是β0或者σ0。对于干涉处理来说,定标其实不是必须的——因为干涉用的是相位差,而定标只影响幅度。但如果你后续要做幅度分析、相干性计算或者变化检测,定标就是必不可少的一步。
在SNAP里的操作是Radar > Radiometric > Calibrate。参数选择上,Output image in complex要勾选(保持复数格式),Output sigma0 band根据你的需求选择。做干涉的话,其实这一步可以跳过,但我个人习惯还是做一下,因为定标后的影像在可视化的时候动态范围更合理,方便检查数据质量。
定标有一个容易搞混的地方:β0和σ0的区别。β0是雷达亮度,没有做地形校正;σ0是后向散射系数,考虑了入射角的影响。如果你要做地形归一化,还需要进一步做γ0的转换。这些概念在入门的时候容易混淆,但只要记住一点——做干涉不用管这些,做幅度分析才需要仔细选择。
3.2 热噪声去除的实际影响
Sentinel-1的TOPS模式(Terrain Observation with Progressive Scans)有一个特点:每个子条带(sub-swath)之间的边界区域存在热噪声,表现为周期性的亮度异常。这个噪声在干涉图上会产生明显的相位跳变,如果不处理,后续的解缠会出大问题。
SNAP提供了Radar > Remove GRD Border Noise和Radar > Thermal Noise Removal两个工具。对于SLC数据,主要用后者。操作很简单,选择Thermal Noise Removal,保持默认参数即可。处理完之后你可以对比一下处理前后的影像,在子条带边界处会看到明显的改善。
提示:热噪声去除这个步骤在SNAP的Graph Builder里经常被遗漏。如果你是用命令行批量处理,记得在XML流程文件里加上这个节点。我见过不少人跑完整个流程才发现干涉图上有规律的条纹,回头排查半天才想起来是热噪声没去掉。
3.3 去斑滤波:做还是不做,这是个问题
去斑滤波(Speckle Filtering)的目的是抑制SAR影像固有的相干斑噪声。但这里有一个重要的判断:如果你后续要做干涉或者相干性分析,不要在干涉之前做去斑滤波。因为滤波会改变像素之间的相位关系,影响干涉质量。
去斑滤波一般用在两种场景:一是做幅度影像的分类或者变化检测,二是对干涉图做滤波(这是另一回事,用的是Goldstein滤波或者Boxcar滤波)。对于干涉流程来说,多视(Multi-looking)本身就起到了一定的去斑效果,不需要额外做单视影像的滤波。
如果你确实需要做去斑,SNAP提供了好几种滤波器:Lee、Refined Lee、Frost、Gamma MAP等。我一般推荐Refined Lee,它在保持边缘细节和抑制噪声之间平衡得比较好。窗口大小通常选7x7,太大了会过度平滑,太小了效果不明显。
4. 精确配准:干涉测量的成败关键
4.1 配准的基本原理与TOPS模式的特殊挑战
配准(Coregistration)的目的是让主影像和从影像中同一个地面目标对应的像素精确对齐。如果配准精度不够,干涉相位里就会混入由几何失配引起的误差,表现为干涉图上的条纹不清晰或者出现虚假条纹。
对于传统的条带模式SAR,配准精度达到0.1个像素就够了。但Sentinel-1的TOPS模式有个特殊问题:方位向存在多普勒中心频率的线性变化。这意味着即使配准精度达到了0.1像素,在子条带边缘仍然可能出现相位跳变。所以TOPS模式的配准精度要求更高,一般需要达到0.001像素量级。
SNAP里针对TOPS模式提供了专门的配准工具:Radar > Coregistration > S-1 TOPS Coregistration。这个工具实际上是一个流程链,包含了粗配准、精配准和方位向滤波等步骤。
4.2 配准流程的逐步拆解
SNAP的S-1 TOPS Coregistration工具包含以下几个子步骤:
第一步:Apply Orbit File。前面已经说过了,这里不再重复。但要注意的是,配准的时候主从影像都需要应用轨道文件。
第二步:Back Geocoding。这一步利用轨道信息和DEM(数字高程模型)把从影像映射到主影像的坐标系下。DEM的选择很重要——平坦地区用SRTM 1Sec就够了,地形起伏大的区域建议用更精细的DEM,比如ASTER GDEM或者TanDEM-X。SNAP内置了自动下载DEM的功能,但速度可能比较慢,可以提前下载好放在本地。
第三步:Enhanced Spectral Diversity(ESD)。这是TOPS模式配准的核心步骤。ESD利用子条带重叠区域的数据来估计和校正方位向的配准误差。如果没有这一步,子条带之间的相位跳变几乎不可避免。
ESD处理之后,SNAP会输出一个配准质量报告,里面包含了配准精度的估计值。这个值应该小于0.001像素,如果大于这个值,说明配准可能有问题,需要检查轨道文件、DEM或者数据本身的质量。
4.3 配准失败的常见原因与排查思路
配准失败是新手最常遇到的问题之一。根据我的经验,原因通常集中在以下几个方面:
轨道文件问题:如果主从影像的轨道文件不匹配或者缺失,配准精度会大幅下降。检查方法是看配准报告里的轨道信息是否完整,两个影像的轨道文件是否都是精密轨道。
DEM问题:如果研究区域地形起伏很大,而使用的DEM精度不够,Back Geocoding的精度就会受影响。这种情况下可以尝试换用更高精度的DEM,或者手动调整配准参数。
时间去相干:如果主从影像的时间间隔太长(比如超过一个月),地表变化会导致相干性降低,配准算法可能无法找到足够的匹配点。这时候可以考虑缩短时间基线,或者使用更鲁棒的配准策略。
数据质量问题:有些Sentinel-1数据本身存在质量问题(比如仪器异常期间获取的数据),这种情况下配准失败是数据本身的问题,换一景数据就好了。
排查的时候,我一般会先看配准报告里的几个关键指标:配准精度、相干性均值、残余方位向偏移。如果配准精度差但相干性还行,可能是参数设置问题;如果相干性本身就很低,那多半是时间去相干或者数据质量问题。
5. 干涉图生成与去平地效应:从配准到相位的跨越
5.1 干涉图生成的操作与参数选择
配准完成之后,下一步就是生成干涉图(Interferogram Generation)。在SNAP里的操作路径是Radar > Interferometric > Products > Interferogram。这个工具会同时完成几件事:生成干涉相位、计算相干性、去平地效应(Deburst)。
参数方面,Coherence Estimation Window一般保持默认的5x5或者根据数据情况调整。窗口越大,相干性估计越稳定,但空间分辨率会降低。Number of Looks在做干涉的时候一般设为1,因为多视可以在后续步骤中做。
干涉图生成之后,你会得到一个包含干涉相位、相干性和幅度波段的复合产品。这时候可以初步看一下干涉图的质量——好的干涉图应该能看到清晰的条纹,相干性高的区域条纹连续,相干性低的区域(比如水体、植被密集区)表现为噪声。
5.2 去平地效应与去burst操作的区别
这里有两个容易混淆的概念:去平地效应(Flat-Earth Removal)和去burst(Deburst)。
去平地效应是去除由于地球曲率和参考椭球面引起的系统性相位斜坡。如果不做这一步,干涉图上会有一个大尺度的线性相位趋势,掩盖掉真正的形变信号。SNAP里的操作是Radar > Interferometric > Products > Interferogram对话框里勾选Subtract flat-earth phase,或者在生成干涉图之后单独执行Radar > Interferometric > Flat-Earth Removal。
去burst是针对TOPS模式的特有操作。因为Sentinel-1的TOPS模式是分burst获取的,每个burst之间有重叠区域,这些重叠区域在干涉图上表现为相位跳变。Deburst操作就是把这些burst拼接成一个连续的影像。在SNAP里通过Radar > Interferometric > TOPS > Deburst来执行。
注意:Deburst必须在去平地效应之后做,顺序不能反。如果先Deburst再去平地,重叠区域的相位跳变会影响平地相位估计的精度。
5.3 干涉图滤波与相干性掩膜
干涉图生成之后,通常还需要做滤波来抑制噪声。SNAP提供了Goldstein滤波和Boxcar滤波两种选择。Goldstein滤波是自适应滤波,在相干性高的区域滤波力度小,相干性低的区域滤波力度大,适合大多数场景。Boxcar滤波是简单的均值滤波,适合相干性整体较好的情况。
滤波之后,建议做一次相干性掩膜,把相干性低于某个阈值的区域标记出来。这个阈值一般设在0.2到0.3之间,具体取决于你的研究区域和数据质量。掩膜之后的干涉图在后续解缠的时候会更稳定,因为低相干区域的相位本身就是随机的,参与解缠只会引入错误。
6. 地形相位去除与地理编码:让结果落到真实坐标上
6.1 地形相位去除的原理与操作
地形相位去除(Topographic Phase Removal)是利用外部DEM模拟地形引起的相位贡献,然后从干涉相位中减去这部分。这一步做完之后,剩下的相位就主要是形变相位、大气相位和噪声了。
在SNAP里的操作是Radar > Interferometric > Products > Topographic Phase Removal。你需要指定一个DEM,SNAP会自动完成模拟和差分。DEM的选择和前面配准时一样,平坦地区用SRTM就够了,山区建议用更高精度的DEM。
这里有一个细节值得注意:DEM的垂直精度直接影响地形相位去除的效果。如果DEM本身有较大的高程误差,差分之后会残留地形相关的相位。在山区,这种残留可能比形变信号还大。所以如果你的研究区域地形复杂,建议花点时间找一个高质量的DEM。
6.2 地理编码的两种方式与选择
地理编码(Geocoding)是把SAR坐标系下的结果转换到地理坐标系(比如WGS84经纬度或者UTM投影)。SNAP提供了两种方式:Range-Doppler Terrain Correction和SAR Simulation Terrain Correction。
Range-Doppler方法是最常用的,它利用轨道参数和DEM来做正射校正。操作路径是Radar > Geometric > Terrain Correction > Range-Doppler Terrain Correction。参数方面,Pixel Spacing一般设为10米到30米,取决于你的应用需求。Map Projection根据研究区域选择,国内的话UTM投影比较常用。
SAR Simulation方法精度更高,但计算量也更大,适合地形特别复杂的区域。一般场景下Range-Doppler就够了。
地理编码之后,你会得到一个带有地理坐标的GeoTIFF文件,可以直接导入到GIS软件里和光学影像叠加分析。这时候可以检查一下结果是否合理——比如形变区域的位置是否和已知的地质构造吻合,干涉条纹的走向是否和地形一致。
6.3 结果验证:怎么判断预处理流程是否成功
预处理做完之后,怎么判断结果是否可靠?我一般会从以下几个方面检查:
干涉图质量:好的干涉图应该有清晰的条纹,条纹的疏密和走向应该和地形或者形变场一致。如果干涉图上一片噪声,说明某个环节出了问题。
相干性分布:相干性高的区域应该对应稳定的地表(比如城市、裸地),相干性低的区域应该对应植被、水体等。如果相干性的分布和地表覆盖类型对不上,可能是配准或者滤波的问题。
配准精度报告:前面提到过,ESD之后的配准精度应该小于0.001像素。如果这个值偏大,后续的干涉相位会有系统性误差。
与已知结果的对比:如果你的研究区域有GPS观测数据或者之前发表的结果,可以做一个粗略的对比。形变趋势应该大致吻合,如果差异很大,需要回头检查流程。
7. 批量处理与自动化:当你要处理几十景数据的时候
7.1 Graph Builder的基本用法
当你需要处理大量数据的时候,一景一景手动操作显然不现实。SNAP提供了Graph Builder工具,可以把整个处理流程搭建成一个XML格式的流程图,然后批量执行。
Graph Builder的使用逻辑是:你先把整个流程用各个处理节点连起来,每个节点对应一个处理步骤(比如Apply Orbit File、Calibration、Coregistration等),然后配置每个节点的参数。搭好之后保存为XML文件,就可以通过命令行或者SNAP的批处理界面来执行了。
搭建Graph的时候有几个经验:
- 节点顺序要和手动操作一致,不能跳步。比如配准之前必须先应用轨道文件。
- 参数要仔细核对,特别是文件路径、DEM选择、极化方式这些容易出错的地方。
- 先用一景数据测试,确认流程跑通之后再批量执行。我见过有人直接拿几十景数据跑,结果跑到一半发现参数设错了,全部重来。
7.2 命令行批处理的实操要点
SNAP提供了命令行工具gpt(Graph Processing Tool),可以在终端里执行Graph XML文件。基本用法是:
gpt /path/to/graph.xml -Pinput1=/path/to/master.SAFE -Pinput2=/path/to/slave.SAFE -Poutput=/path/to/output.dim这里的-P参数用来覆盖Graph XML里定义的变量。你可以写一个shell脚本或者Python脚本,循环调用gpt来处理所有影像对。
批处理的时候有几个坑要注意:
内存管理:每个gpt进程都会占用内存,如果你同时跑多个进程,内存很容易爆掉。建议串行执行,或者限制并行数量。
临时文件清理:SNAP处理过程中会产生大量临时文件,批处理的时候要定期清理,否则磁盘很快就满了。
错误处理:不是每一对影像都能成功处理,有些可能因为数据质量问题失败。脚本里要加上错误捕获,记录失败的影像对,方便后续排查。
7.3 处理效率优化的几个技巧
处理效率这件事,硬件配置固然重要,但软件层面的优化也能省不少时间:
- 合理设置多视参数:多视可以降低数据量,但会损失空间分辨率。根据你的应用需求选择合适的多视因子,不要盲目追求高分辨率。
- 使用SSD存储:SNAP的I/O操作很频繁,用SSD比机械硬盘快很多。
- 关闭不必要的波段输出:Graph里可以配置只输出你需要的波段,减少写盘时间。
- 分区域处理:如果研究区域很大,可以分成几个子区域分别处理,最后再拼接。
8. 几个我踩过的坑和对应的解决方案
8.1 配准精度始终不达标的问题
有一次处理一批数据,配准精度怎么都到不了0.001像素,反复检查了轨道文件和DEM都没问题。后来发现是主影像选得不好——那景主影像获取的时候刚好遇到了轻微的轨道机动,虽然数据质量标识是正常的,但轨道精度实际上受到了影响。换了一景主影像之后,配准精度立刻就达标了。
这个经验告诉我:主影像的选择很关键。一般来说,选择时间上居中的、轨道最稳定的、没有质量标记的影像作为主影像。如果做时序分析,主影像一旦选定就不要随意更换,否则所有影像对都要重新配准。
8.2 干涉图上的周期性条纹
有一段时间,我处理的干涉图上总是出现周期性的条纹,间距大概是几百米。排查了很久,最后发现是热噪声去除没有做。Sentinel-1的TOPS模式在子条带边界处的热噪声如果不处理,就会在干涉图上产生这种周期性条纹。
这个问题的隐蔽性在于,它不会导致处理失败,干涉图看起来也"能用",但条纹会干扰后续的解缠和形变提取。所以热噪声去除这一步绝对不能省,哪怕你的研究区域不在子条带边界附近,做了也不会有坏处。
8.3 DEM不匹配导致的系统性相位斜坡
还有一次,干涉图上出现了一个大尺度的相位斜坡,一开始以为是轨道误差,试了好几种轨道校正方法都没效果。后来发现是DEM的问题——我用的DEM版本和SNAP默认的参考椭球不一致,导致地形相位去除的时候引入了一个系统性的偏差。换了一个和SNAP兼容的DEM之后,问题就解决了。
这个坑的教训是:DEM的选择要注意和软件的兼容性。SNAP内置的SRTM DEM是经过适配的,直接用一般没问题。如果你要用外部DEM,最好先确认一下它的基准面和SNAP使用的一致。
8.4 批量处理时的文件路径问题
用Graph Builder做批处理的时候,文件路径是最容易出问题的地方。Windows和Linux的路径分隔符不同,绝对路径和相对路径的解析方式也不同。我有一次在Windows上搭好的Graph,拿到Linux服务器上跑,所有的文件路径都失效了。
解决办法是在Graph里使用变量来代替硬编码的路径,然后在命令行通过-P参数传入实际路径。这样Graph文件就和平台无关了,在哪个系统上都能跑。另外,路径里尽量不要有空格和特殊字符,否则容易出解析错误。
9. 从预处理到后续分析的衔接
预处理做完之后,你得到的是一个经过配准、去平地、去地形相位、地理编码的干涉产品。这个产品可以直接用于后续的形变提取,比如相位解缠、时序分析等。但有几个衔接上的问题需要注意。
相位解缠的输入要求:解缠之前,干涉图应该已经去除了平地相位和地形相位,并且做了适当的滤波。如果滤波过度,解缠可能会失败;如果滤波不够,解缠结果会有很多噪声。这个平衡需要根据数据质量来调整。
时序分析的配准一致性:如果你要做时序InSAR(比如PS-InSAR或者SBAS),所有影像必须配准到同一个主影像上。这意味着你不能每对影像单独选主影像,而是要确定一个公共主影像,然后把所有从影像都配准到它上面。这个工作在预处理阶段就要规划好。
数据格式的转换:SNAP输出的.dim格式是它自己的格式,后续如果用其他软件(比如GAMMA、ISCE)处理,需要转换成对应的格式。SNAP支持导出为GeoTIFF、ENVI等通用格式,但要注意导出的时候波段顺序和数据类型是否正确。
元数据的保留:预处理过程中产生的元数据(比如配准精度、相干性统计、处理参数等)要妥善保存。这些信息在后续分析中可能用到,特别是当你需要写论文或者报告的时候,这些参数是必须提供的。
整个Sentinel-1 SAR数据预处理流程走下来,涉及的步骤确实不少,但每一步都有它存在的理由。理解了这些理由,你就能在遇到问题的时候知道该往哪个方向排查,而不是盲目地试参数。我个人的建议是,刚开始的时候不要怕麻烦,每一步都手动做一遍,看看中间结果长什么样。等你对整个流程有了感觉,再用Graph Builder做自动化。这样即使自动化流程出了问题,你也能快速定位到是哪个环节的毛病。