庾 露
(南宁师范大学地理科学与规划学院 广西 南宁 530001)
合成孔径雷达(Synthetic Aperture Radar,SAR)是一种主动成像微波遥感技术,主要通过多普勒波束锐化和孔径合成,以及脉冲压缩等技术,分别实现观测目标沿传感器运动方向和视线方向上的二维高分辨率[1]。SAR具有全天候全天时成像的优点,然而星载SAR技术在过去很长一段时间里一直被欧洲、美国、加拿大和日本等国家和地区所掌握[2]。长期以来,国内所使用的星载SAR数据完全依赖于国外,数据购买成本高,订购周期较长,网络传输不稳定,难以满足我国进行快速、长期、大范围监测的需求[3]。随着我国自主研制的首颗多极化C波段SAR卫星高分三号(GF-3)成功发射并于2017年正式投入运行,我国开始进入卫星微波遥感应用时代[4]。基于GF-3数据的应用和研究在过去两年多的时间里逐步开展,并在国土测绘[5-6]、应急救灾[7-8]、资源普查[9-10]、气象[11]、海洋[12]等多个行业取得了诸多成果。
目前能够处理GF-3数据的软件以商业遥感软件为主,如国外著名的SAR处理软件GAMMA和SARScape,以及国内主流的SAR Studio和PIE-SAR等。这些软件的授权和维护费用高昂,单节点费用在10万~40万元/年不等,个人或小型研究机构难以承担。而商业软件的闭源性质,对用户隐藏了大部分核心算法和实现细节,也在一定程度上限制了GF-3卫星数据应用的发展。SNAP(Sentinel Application Platform)是由欧空局主导开发的免费开源通用架构,为地球观测数据的处理和分析提供支撑[13]。SNAP具有友好的图形化界面,能够快速显示GB级的影像,允许用户以图形方式搭建批处理流程,可叠加多种空间数据。欧空局和其他机构已经基于该架构开发了SNAP处理平台,其下包含了Sentinel-1/2/3 Toolbox三个主要工具箱,集成了分别针对SAR、光学和海洋遥感三个领域的卫星数据全流程处理方法。Sentinel工具箱在支持本系列卫星的同时,还以插件、扩展模块或独立工具的方式实现对其他卫星数据格式的解析和转换,使SNAP处理平台能够识别,使已集成的工具能够进行处理。
本文将探讨如何基于SNAP提供的开源架构,实现对GF-3数据格式的转换,从而可以利用Sentinel-1工具箱提供的SAR处理工具,实现数据处理并有效降低软件购置的成本。本文首先分析SNAP的核心数据模型PDM以及GF-3的数据结构,建立从GF-3数据到PDM的转换逻辑;然后针对GF-3数据存在一些独有特性,设计转换的具体流程和方法;最后利用Sentinel-1工具箱内的干涉、极化、地理编码等主要工具对转换后的数据进行实验性处理,验证转换数据和处理结果的正确性,以及整个设计思路的可行性。
产品数据模型(Product Data Model,PDM)是SNAP架构的核心数据模型。PDM提供了对实际数据格式的抽象接口描述,用以兼容各类格式不同的遥感数据。每个Sentinel工具箱中的读/写组件都首先实现了PDM的读/写接口,然后根据本工具箱所应用的领域加入新的类成员,形成读/写抽象类;最后,由开发者针对不同格式的卫星遥感数据完全实现读/写抽象类的内部逻辑。一个内存中的PDM实例是外部数据格式与SNAP数据格式的中转,其中涉及数据的存储由影像数据和描述影像数据属性的元数据两部分组成。
BEAN-DIMAP格式是SNAP平台内部使用的标准文件格式,任何其他空间数据或卫星数据必须首先转换为内存中的PDM实例,再将该实例固化成为硬盘中的BEAN-DIMAP格式文件,最后才能被SNAP平台处理。因此BEAN-DIMAP格式文件是PDM实例在磁盘上的具体实现。该格式结构较为简单易于理解,内部数据为标准存储格式,可以被多数GIS和遥感软件直接打开。该格式结构由以下部分组成:1) 以.dim为后缀的产品头文件,以XML格式组织,记录产品的元数据信息。2) 与.dim头文件名相同,以.data为后缀的文件夹,存储以ENVI兼容格式记录的波段影像文件,影像产品的关键节点信息,以及户新建的感兴趣区、掩膜区等。
Sentinel-1工具箱为了最大程度地兼容不同传感器所生产的SAR影像产品,在.dim头文件中的Abstracted_Metadata节点内设计了共80个子节点记录SAR影像处理业务中所需的各项参数。其中包括影像成像时间、升/降轨、侧视方向、雷达传感器频率、极化通道、影像地理坐标、入射角、距离向/方位向分辨率、轨道矢量等。这些参数所需信息大部分需从高分三元数据文件中获取。
高分三号卫星具有12种成像模式,以及L0~L3共4级数据产品[14]。本工具目前设计支持的数据产品为L1A级单视复数影像(Single Look Complex,SLC),成像模式为条带成像模式。SLC是对SAR传感器接收的L0级原始回波信号进行聚焦成像处理后得到的产品,该影像数据包含了实部和虚部信息,可进一步转换为强度和相位用于干涉测量,或转化为极化散射矩阵用于极化特征提取和极化分解。SLC在成像的同时最大程度地保留了地物信息,可在此基础上生成更高等级的数据产品,因此其应用范围较其他类型产品更灵活和广泛,是最为常用的一种数据产品;另一方面,在条带成像模式下,天线波束都是以一个固定视角对地面进行照射,在距离向和方位向上都不进行摆动,成像机制较为简单,也是应用最广泛的一种成像模式。
本工具基于SNAP API,使用Java语言开发,并设计为独立模式和命令行方式运行,将实现以下功能:1) 对GF-3元数据的读取和解析,对影像数据文件的读入和处理。2) 在内存中生成适用于SAR数据处理的PDM实例,将读入的数据存入该实例中。3) 生成并调用BEAN-DIMAP写入对象,将PDM实例存储为BEAM-DIMAP格式文件。转换工具的功能结构和工作流程如图1所示,分为读取和写入两部分。
转换工具的详细算法流程设计如图2所示。
图2 转换工具的算法流程
2.2.1读取部分
如图2所示,读取部分的功能具体由三个类实现,分别为GaoFen3ProductReaderPlugIn、GaoFen3ProductReader和GaoFen3ProductDirectory。其中:
1) GaoFen3ProductReaderPlugIn类实现ProductReaderPlugIn接口,主要用于生成GaoFen3ProductReader实例;返回GF-3数据文件名中一些固定的常量参数,如文件名的前缀或后缀等。
2) GaoFen3ProductReader类继承抽象类SARReader,主要实现将tiff格式的SLC影像文件,按极化方式分别读入内存,作为PDM实例中记录影像数据的部分;创建GaoFen3ProductDirectory实例等。
3) GaoFen3ProductDirectory类继承抽象类XMLProductDirectory,主要实现以下功能:
(1) 创建一个单实例对象MetadataElement(元数据元素),实现Abstracted_Metadata节点结构,作为PDM实例中元数据的部分。MetadataElement类具有典型的树状结构以及操作树节点的方法,任何一个由该类实例化的对象都可看作一个节点,都可包含多个子节点和属性,多个MetadataElement对象记录的元数据信息以及共同形成的树状结构与常见的XML、JSON等结构化数据格式类似,因此可与之相互转换。
(2) 根据Sentinel-1工具箱对SAR数据处理的要求,对PDM的元数据节点树进行填充,添加所需的子节点以构建出相应的树状结构,同时根据子节点名的含义在GF-3元数据XML文件中寻找并解析出对应的值填入子节点中。根据GF-3数据的特点,在本工具的设计中,只使用了Abstracted_Metadata设计的80个参数中的52个。其中一些参数值可从XML文件中直接解析获得,如:升降轨、侧视方向、影像行列数、极化方式等;而另一些参数则必须进行一定的转换或计算,如影像范围地理坐标需转换为影像角点的地理坐标,又如影像角点的斜距和入射角需通过GF-3元数据中最近入射角、影像行列数、分辨率等多个参数计算获得。
(3) 将PDM实例中记录的SLC影像数据按极化方式拆分为实部和虚部,并统一以“x_PQ”的格式命名。其中:x为i或q,分别代表实部或虚部;P和Q分别代表极化SAR系统发射和接收的极化方向组合,分为水平极化(H)或垂直极化(V)。
2.2.2写入部分
写入部分的功能由GaoFen3Writer类实现,该类首先实现输出文件路径有效性判断,然后实现极化定标的功能,最后创建DimapHeaderWriter对象和DimapProductWriter对象,将给定的PDM实例输出到指定的文件路径下形成BEAN-DIMAP格式文件,其中前者将PDM实例的元数据输出成.dim头文件,后者将PDM实例中影像数据输出成影像文件。
2.3.1XML解析和PDM元数据节点树填充
从GF-3元数据XML文件中解析出所需的元数据值,构建由若干个MetadataElement对象组成的节点树是构建PDM实例中元数据部分的关键,也是后续输出BEAN-DIMAP文件的基础。其中:
1) XML元数据文件的解析,基本的文件读取功能已由SNAP API中的AbstractProductReader和XMLProductDirectoy两个抽象类分别封装,并由工具中的GaoFen3ProductReader和GaoFen3ProductDirectory分别继承实现。工具执行时会一次性读取输入XML元数据文件内的所有节点,将其存入一个MetadataElement对象(本文将其命名为oriRoot)中。调用MetadataElement对象中的getElement方法可访问当前节点下的子节点,使用逐级调用可访问到任意位置的节点,调用getAttribute方法,可读取当前节点的值,从而实现对XML元数据文件的解析。
2) PDM元数据节点树的构建,由GaoFen3Product-Directory类重写父类的addAbstractedMetadataHeader方法实现。在该方法内部也会首先初始化一个MetadataElement对象作为PDM实例中元数据的根节点(本文将其命名为absRoot),absRoot的结构与2.2节所述的Abstracted_Metadata节点一致。
3) 对PDM元数据节点树的填充,由AbstractMetadata类中的setAttribute静态方法完成,工具根据absRoot内子节点的含义,在oriRoot中寻找对应的节点并解析出具体的值,填充到absRoot对应的子节点中,重复多次直到本工具设计的52个参数都已被赋值。
2.3.2影像角点地理坐标确定
SAR遥感与光学遥感在成像方式和处理方式上都具有本质不同,SAR遥感借助机载或星载平台移动获得地表图像。这一过程是通过雷达波束沿着与传感器运动方向(称为方位向,对应SAR影像的Y轴)几乎垂直的方向(称为距离向,对应SAR影像的X轴)发射相位调制脉冲,接收并记录地表反射回波,经脉冲压缩、多普勒频移孔径合成等一系列信号处理方法得到地物在二维影像上的正确位置信息[15]。因此,SAR影像的X轴和Y轴分别与成像时刻传感器到地物的斜距距离以及传感器运动矢量相关,以影像左上角点为坐标轴原点,按距离-方位坐标系(SAR坐标系)而非真实地理坐标记录地物位置。
GF-3的SLC影像产品中并不包含地理坐标信息,而是在元数据文件中提供了影像覆盖区域最北、最南、最东和最西4个端点的地理坐标,需要配合影像升降轨模式、波束侧视照射方向,并与Sentinel-1工具箱提供的影像首次成像近点、首次成像远点、末次成像近点和末次成像远点的地理坐标共4个参数匹配,才能保证地理编码结果的正确。图3标示了GF-3由升/降轨和左/右侧视模式组合产生的4种成像几何模式;同时,还确定了Sentinel-1工具箱规定的4个角点与GF-3元数据提供的影像覆盖区4个端点的匹配关系。本工具首先分别解析GF-3元数据中的Direction节点获取升/降轨参数、lookDirection节点获取波束侧视照射方向,以及corner节点获取影像覆盖端点坐标,然后参照图3,完成影像角点地理坐标的确定。
图3 高分三号卫星成像几何模式与影像角点地理位置关系
影像角点地理坐标确定的核心步骤如算法1所示。
算法1影像角点地理坐标确定算法
输入:oriRoot根节点中最北、最南、最东和最西共4个端点的地理坐标。
输出:首次成像近点、首次成像远点、末次成像近点和末次成像远点共4个角点的地理坐标。
%在oriRoot根节点中解析出影像的最北、最南、最东和最西4个端点的地理经纬度(位于oriRoot.product.imageinfo.corner节点内)%
%在oriRoot根节点中解析出影像的升/降轨和左/右侧视成像参数(分别位于oriRoot.product.Direction和oriRoot.product.sensor.lookDirection节点内)%
%根据成像参数,确定首次成像近点、首次成像远点、末次成像近点和末次成像远点的地理坐标(以升轨右视为例,其他情况则参考图3确定)%
3. if orbitDirc=‘ascending’ and lookDirc=‘right’ then
2.3.3辐射定标
辐射定标的目的是使SAR影像的每一个像素值都能表示唯一确定的地物后向散射信息。典型的SLC影像产品本身是未经过辐射定标处理的,只适用于干涉测量或简单的目视解译。当需要进行极化相关处理(如:极化矩阵生成、极化分解、极化分类),或与其他时相或地区的SAR影像进行比较,或者进行地表参数反演时[16],都必须首先进行辐射定标。由于Sentinel-1工具箱已集成的辐射定标工具只对已知的SAR传感器类型有效,无法处理未受支持的GF-3影像,因此工具在输出文件部分提供了辐射定标的可选功能。对GF-3的SLC数据进行辐射定标的公式[17]如下:
(1)
式中:下标p和q分别代表极化SAR系统发射和接收的极化方向组合,分为水平极化(H)或垂直极化(V);DNpq为未经辐射定标的16位短整型像素值,一个SLC复数型像素是由同行相邻列的两个实数型像素分别存储其实部和虚部实现的;QVpq和CALpq分别为该景影像量化前的最大值和该景影像的雷达散射定标系数,分别由元数据中QualifyValue和CalibrationConst节点根据不同的极化方式分别记录[8];Spq为经辐射定标后的像素值。
利用转换工具,将GF-3影像数据转换为BEAN-DIMAP格式文件,并利用Sentinel-1工具箱中已集成的工具对转换后结果进行极化分级和地理编码实验,以验证转换结果的正确性。
实验在普通PC上运行,硬件环境:CPU Intel(R) Core(TM) i5-6600K @3.50 GHz,内存32 GB;软件环境:Windows 10专业版,JDK 1.8,SNAP 7.0。
实验数据为GF-3全极化数据,验证数据选择相同区域、相近拍摄时间的资源三号光学卫星影像作为参考,详细参数如表1所示。所选实验区为广东省茂名市电白区电城镇、马踏镇和树仔镇所辖区域,区内包含近海水体、城镇人工建筑、裸地、林地、水田等典型地物。
表1 影像参数
1) 实验数据包含了全极化共4个极化通道的tiff格式影像文件和以.meta.xml结尾的元数据文件。用户执行转换工具需设定输入元数据文件的路径,输出BEAN-DIMAP格式文件的头文件名和路径,以及是否进行辐射定标共3个参数。由于需将转换后数据进行极化分解,因此应设置进行辐射定标。
2) 使用Sentinel-1工具箱提供的极化分解工具,对转换和辐射定标后的GF-3数据进行极化分解。本次实验选择Freeman-Durden方法[18],其原因是该方法为非相干极化目标分解,适用于回波构成复杂、非稳态的目标散射地物,其结果为3种常见的散射分量(二次散射、体散射和表面散射),也容易根据各分量的占比解释地物的物理结构从而推断地物类型。Freeman-Durden分解之前需要使用滑动窗口对一定范围内非稳态目标做平均统计,窗口尺寸越大对相干斑点噪声抑制越好,但分辨率损失越严重。本次实验的窗口尺寸采用SNAP默认的5像素×5像素,可在不损失过多分辨率的同时获得较准确的散射分量。
3) 最后使用地理编码工具,分别将极化分解得到的3个散射分量占比转为地理坐标,使之能够与其他地理数据进行对比分析。
图4为经上述处理后的结果,并结合资源3号光学卫星影像作为参考。其中:区域A和B的二面角散射分布集中、占比较大,人工建筑是典型的二面角散射来源,说明该处很可能存在大量的人工建筑,光学卫星显示该区域分别为城镇和村落,与推断相符;区域C为林地,其散射机制主要为体散射,因此体散射比重最大,其他两种散射比重偏小;区域D为裸地,因此以表面散射为主;区域E为近海水体,三个散射分量的占比都极低,因此均呈暗黑色,只有少量表面散射是由水面波浪贡献的;区域F在体散射分量图中以暗灰色不规则条状斑块分布,相比于光学影像更容易区分,这是因为水田的散射分量中,由低矮作物所产生的体散射相对少,而更多来源于所处平坦地势产生的背景表面散射,以及由水面或地面与作物的植株产生的弱二次散射。上述对典型地物极化特征的识别,大部分都可与光学影像相互验证。
综上所述,GF-3影像经本工具转换后数据信息保持完整、格式正确,可由SNAP软件平台正常加载,能够利用Sentinel-1工具箱进行后续处理并得到真实反映实地情况,达到了预期目标。
本文提出并实现了基于SNAP通用架构对高分三号卫星数据进行转换的方法。该研究成果是对SNAP平台在数据源上的补充,使得高分三号卫星数据与SNAP平台兼容,可被其内置的Sentinel-1工具箱识别并进行后续处理。目前Sentinel-1工具箱集成了较为全面的SAR数据处理工具,涵盖了SAR遥感应用的两大方向:干涉测量和极化分析。通过与本研究结合,可利用其干涉测量模块对覆盖同一区域的2景高分三号影像进行干涉处理,获取该区域的高程或地表变形信息,是国土测绘或地质灾害监测的有力手段。也可采用其极化分析模块,利用高分三号卫星SAR数据能够穿透云雨获取地物属性的特性,实现在恶劣天气条件下对洪水水面或南方作物长势进行监测,从而在水利或农业监测方面进一步拓展国产SAR卫星的应用场景。
工具目前只支持高分三号卫星条带模式的SLC数据产品,在未来的研究工作中,将朝着以下两个方面进行改进:1) 拓展支持其他成像模式和数据产品。2) 实现图形化界面,并以扩展插件的形式与SNAP平台软件进行深度集成,提高操作的易用性。