SNAP批量处理Sentinel-1A数据

本文详细介绍了如何使用SNAP的gpt工具,通过预先创建的流程图,批量处理Sentinel-1A的时序SAR数据。步骤包括对参考影像和时序数据进行极化预处理,生成C2矩阵并进行配准。每个步骤都提供了相应的XML配置文件内容,适用于大规模数据处理,提高工作效率。
摘要由CSDN通过智能技术生成

SNAP批量处理Sentinel-1A数据

通常情况,使用SNAP处理单景影像有两种方式,一是在SNAP中按照预处理步骤一个功能一个功能地处理数据,另一种是创建流程图直接运行得到最终的结果。

然而,当遇到时序数据时,上述做法显然不适用,这种情况下,我们可以采用gpt+流程图处理批量数据
.
具体操作流程如下(本实验数据为广州市2018年Sentinel-1A SAR影像,示例步骤为生成每一景影像的C2矩阵并配准)

打开Windows PowerShell编译器

首先找到snap gpt的位置,选择【文件】->【Windows PowerShell】
在这里插入图片描述在命令行,输入cmd
在这里插入图片描述

运行gpt(总览)

本实验目的是生成一年影像的C2矩阵,并配准
我们可以将此过程分解为三个步骤:
1、对参考影像进行极化预处理,便于后面配准
2、对每一景影像进行极化预处理
3、对极化预处理后的C2矩阵进行配准
总的gpt代码如下:

## 极化预处理——获取C2矩阵
# 打开cmd 
cmd
# 对参考影像进行极化预处理
gpt F:\Data\S1_Guangzhou\C2-graph-main\1Reference.xml
# 对S1数据进行极化预处理
for /r "F:\Data\S1_Guangzhou\Sum" %X in (*.zip) do (gpt F:\Data\S1_Guangzhou\C2-graph-main\1Sum.xml -Pinput=%X  -Poutput="F:\Data\S1_Guangzhou\S2_features\Subset_%~nX_features.dim")
# 对时序S1数据进行配准
for /r "F:\Data\S1_Guangzhou\S2_features" %X in (*.dim) do (gpt F:\Data\S1_Guangzhou\C2-graph-main\1Coregister.xml -Pinput=%X)

!!!注意:
1、循环的语句中的路径需要根据需求修改
2、xml文件可根据需要在SNAP中创建
3、xml文件创建好后,将原有的输入路径改为$ input,输入路径改为$ output,结合for循环即可实现遍历

Step1:对参考影像进行极化预处理

SNAP中创建的流程图以及xml文件内容如下:
在这里插入图片描述

<graph id="Graph">
  <version>1.0</version>
  <node id="Read">
    <operator>Read</operator>
    <sources/>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>F:\Data\S1_Guangzhou\S1A_IW_SLC__1SDV_20200108T103351_20200108T103419_030708_03852A_7855.zip</file>
    </parameters>
  </node>
  <node id="Apply-Orbit-File">
    <operator>Apply-Orbit-File</operator>
    <sources>
      <sourceProduct refid="Read"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <orbitType>Sentinel Precise (Auto Download)</orbitType>
      <polyDegree>3</polyDegree>
      <continueOnFail>true</continueOnFail>
    </parameters>
  </node>
  <node id="TOPSAR-Split">
    <operator>TOPSAR-Split</operator>
    <sources>
      <sourceProduct refid="Apply-Orbit-File"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <subswath>IW2</subswath>
      <selectedPolarisations/>
      <firstBurstIndex>3</firstBurstIndex>
      <lastBurstIndex>6</lastBurstIndex>
      <wktAoi/>
    </parameters>
  </node>
  <node id="Calibration">
    <operator>Calibration</operator>
    <sources>
      <sourceProduct refid="TOPSAR-Split"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <auxFile>Latest Auxiliary File</auxFile>
      <externalAuxFile/>
      <outputImageInComplex>true</outputImageInComplex>
      <outputImageScaleInDb>false</outputImageScaleInDb>
      <createGammaBand>false</createGammaBand>
      <createBetaBand>false</createBetaBand>
      <selectedPolarisations/>
      <outputSigmaBand>true</outputSigmaBand>
      <outputGammaBand>false</outputGammaBand>
      <outputBetaBand>false</outputBetaBand>
    </parameters>
  </node>
  <node id="TOPSAR-Deburst">
    <operator>TOPSAR-Deburst</operator>
    <sources>
      <sourceProduct refid="Calibration"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <selectedPolarisations/>
    </parameters>
  </node>
  <node id="Subset">
    <operator>Subset</operator>
    <sources>
      <sourceProduct refid="TOPSAR-Deburst"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <region>0,0,0,0</region>
      <referenceBand/>
      <geoRegion>POLYGON ((113.17552185058594 23.3626651763916, 113.56804656982422 23.3626651763916, 113.56804656982422 22.93994140625, 113.17552185058594 22.93994140625, 113.17552185058594 23.3626651763916, 113.17552185058594 23.3626651763916))</geoRegion>
      <subSamplingX>1</subSamplingX>
      <subSamplingY>1</subSamplingY>
      <fullSwath>false</fullSwath>
      <tiePointGrids/>
      <copyMetadata>true</copyMetadata>
    </parameters>
  </node>
  <node id="Polarimetric-Matrices">
    <operator>Polarimetric-Matrices</operator>
    <sources>
      <sourceProduct refid="Subset"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <matrix>C2</matrix>
    </parameters>
  </node>
  <node id="Multilook">
    <operator>Multilook</operator>
    <sources>
      <sourceProduct refid="Polarimetric-Matrices"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <nRgLooks>4</nRgLooks>
      <nAzLooks>1</nAzLooks>
      <outputIntensity>false</outputIntensity>
      <grSquarePixel>true</grSquarePixel>
    </parameters>
  </node>
  <node id="Terrain-Correction">
    <operator>Terrain-Correction</operator>
    <sources>
      <sourceProduct refid="Polarimetric-Speckle-Filter"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <demName>SRTM 1Sec HGT</demName>
      <externalDEMFile/>
      <externalDEMNoDataValue>0.0</externalDEMNoDataValue>
      <externalDEMApplyEGM>true</externalDEMApplyEGM>
      <demResamplingMethod>BILINEAR_INTERPOLATION</demResamplingMethod>
      <imgResamplingMethod>BILINEAR_INTERPOLATION</imgResamplingMethod>
      <pixelSpacingInMeter>14.73</pixelSpacingInMeter>
      <pixelSpacingInDegree>1.3232184135080554E-4</pixelSpacingInDegree>
      <mapProjection>GEOGCS[&quot;WGS84(DD)&quot;, &#xd;
  DATUM[&quot;WGS84&quot;, &#xd;
    SPHEROID[&quot;WGS84&quot;, 6378137.0, 298.257223563]], &#xd;
  PRIMEM[&quot;Greenwich&quot;, 0.0], &#xd;
  UNIT[&quot;degree&quot;, 0.017453292519943295], &#xd;
  AXIS[&quot;Geodetic longitude&quot;, EAST], &#xd;
  AXIS[&quot;Geodetic latitude&quot;, NORTH]]</mapProjection>
      <alignToStandardGrid>false</alignToStandardGrid>
      <standardGridOriginX>0.0</standardGridOriginX>
      <standardGridOriginY>0.0</standardGridOriginY>
      <nodataValueAtSea>true</nodataValueAtSea>
      <saveDEM>false</saveDEM>
      <saveLatLon>false</saveLatLon>
      <saveIncidenceAngleFromEllipsoid>false</saveIncidenceAngleFromEllipsoid>
      <saveLocalIncidenceAngle>false</saveLocalIncidenceAngle>
      <saveProjectedLocalIncidenceAngle>false</saveProjectedLocalIncidenceAngle>
      <saveSelectedSourceBand>true</saveSelectedSourceBand>
      <saveLayoverShadowMask>false</saveLayoverShadowMask>
      <applyRadiometricNormalization>false</applyRadiometricNormalization>
      <saveSigmaNought>false</saveSigmaNought>
      <saveGammaNought>false</saveGammaNought>
      <saveBetaNought>false</saveBetaNought>
      <incidenceAngleForSigma0>Use projected local incidence angle from DEM</incidenceAngleForSigma0>
      <incidenceAngleForGamma0>Use projected local incidence angle from DEM</incidenceAngleForGamma0>
      <auxFile>Latest Auxiliary File</auxFile>
      <externalAuxFile/>
    </parameters>
  </node>
  <node id="Polarimetric-Speckle-Filter">
    <operator>Polarimetric-Speckle-Filter</operator>
    <sources>
      <sourceProduct refid="Multilook"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <filter>Refined Lee Filter</filter>
      <filterSize>5</filterSize>
      <numLooksStr>1</numLooksStr>
      <windowSize>7x7</windowSize>
      <targetWindowSizeStr>3x3</targetWindowSizeStr>
      <anSize>50</anSize>
      <sigmaStr>0.9</sigmaStr>
      <searchWindowSizeStr>15</searchWindowSizeStr>
      <patchSizeStr>5</patchSizeStr>
      <scaleSizeStr>1</scaleSizeStr>
    </parameters>
  </node>
  <node id="Write">
    <operator>Write</operator>
    <sources>
      <sourceProduct refid="Terrain-Correction"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>F:\Data\S1_Guangzhou\Reference.dim</file>
      <formatName>BEAM-DIMAP</formatName>
    </parameters>
  </node>
  <applicationData id="Presentation">
    <Description/>
    <node id="Read">
            <displayPosition x="14.0" y="52.0"/>
    </node>
    <node id="Apply-Orbit-File">
      <displayPosition x="91.0" y="53.0"/>
    </node>
    <node id="TOPSAR-Split">
      <displayPosition x="201.0" y="54.0"/>
    </node>
    <node id="Calibration">
      <displayPosition x="301.0" y="55.0"/>
    </node>
    <node id="TOPSAR-Deburst">
      <displayPosition x="409.0" y="56.0"/>
    </node>
    <node id="Subset">
      <displayPosition x="436.0" y="106.0"/>
    </node>
    <node id="Polarimetric-Matrices">
      <displayPosition x="403.0" y="150.0"/>
    </node>
    <node id="Multilook">
      <displayPosition x="437.0" y="195.0"/>
    </node>
    <node id="Terrain-Correction">
      <displayPosition x="568.0" y="249.0"/>
    </node>
    <node id="Polarimetric-Speckle-Filter">
      <displayPosition x="390.0" y="248.0"/>
    </node>
    <node id="Write">
      <displayPosition x="704.0" y="250.0"/>
    </node>
  </applicationData>
</graph>

Step2:对时序S1数据进行极化预处理

SNAP中创建的流程图以及xml文件内容如下:
在这里插入图片描述

在这里插入代码片<graph id="Graph">
  <version>1.0</version>
  <node id="Read">
    <operator>Read</operator>
    <sources/>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>$input</file>
    </parameters>
  </node>
  <node id="Apply-Orbit-File">
    <operator>Apply-Orbit-File</operator>
    <sources>
      <sourceProduct refid="Read"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <orbitType>Sentinel Precise (Auto Download)</orbitType>
      <polyDegree>3</polyDegree>
      <continueOnFail>true</continueOnFail>
    </parameters>
  </node>
  <node id="TOPSAR-Split">
    <operator>TOPSAR-Split</operator>
    <sources>
      <sourceProduct refid="Apply-Orbit-File"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <subswath>IW2</subswath>
      <selectedPolarisations/>
      <firstBurstIndex>3</firstBurstIndex>
      <lastBurstIndex>6</lastBurstIndex>
      <wktAoi/>
    </parameters>
  </node>
  <node id="Calibration">
    <operator>Calibration</operator>
    <sources>
      <sourceProduct refid="TOPSAR-Split"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <auxFile>Latest Auxiliary File</auxFile>
      <externalAuxFile/>
      <outputImageInComplex>true</outputImageInComplex>
      <outputImageScaleInDb>false</outputImageScaleInDb>
      <createGammaBand>false</createGammaBand>
      <createBetaBand>false</createBetaBand>
      <selectedPolarisations/>
      <outputSigmaBand>true</outputSigmaBand>
      <outputGammaBand>false</outputGammaBand>
      <outputBetaBand>false</outputBetaBand>
    </parameters>
  </node>
  <node id="TOPSAR-Deburst">
    <operator>TOPSAR-Deburst</operator>
    <sources>
      <sourceProduct refid="Calibration"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <selectedPolarisations/>
    </parameters>
  </node>
  <node id="Subset">
    <operator>Subset</operator>
    <sources>
      <sourceProduct refid="TOPSAR-Deburst"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <region>0,0,0,0</region>
      <referenceBand/>
      <geoRegion>POLYGON ((113.17552185058594 23.3626651763916, 113.56804656982422 23.3626651763916, 113.56804656982422 22.93994140625, 113.17552185058594 22.93994140625, 113.17552185058594 23.3626651763916, 113.17552185058594 23.3626651763916))</geoRegion>
      <subSamplingX>1</subSamplingX>
      <subSamplingY>1</subSamplingY>
      <fullSwath>false</fullSwath>
      <tiePointGridNames/>
      <copyMetadata>true</copyMetadata>
    </parameters>
  </node>
  <node id="Polarimetric-Matrices">
    <operator>Polarimetric-Matrices</operator>
    <sources>
      <sourceProduct refid="Subset"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <matrix>C2</matrix>
    </parameters>
  </node>
  <node id="Multilook">
    <operator>Multilook</operator>
    <sources>
      <sourceProduct refid="Polarimetric-Matrices"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <nRgLooks>4</nRgLooks>
      <nAzLooks>1</nAzLooks>
      <outputIntensity>false</outputIntensity>
      <grSquarePixel>true</grSquarePixel>
    </parameters>
  </node>
  <node id="Terrain-Correction">
    <operator>Terrain-Correction</operator>
    <sources>
      <sourceProduct refid="Polarimetric-Speckle-Filter"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <sourceBands/>
      <demName>SRTM 1Sec HGT</demName>
      <externalDEMFile/>
      <externalDEMNoDataValue>0.0</externalDEMNoDataValue>
      <externalDEMApplyEGM>true</externalDEMApplyEGM>
      <demResamplingMethod>BILINEAR_INTERPOLATION</demResamplingMethod>
      <imgResamplingMethod>BILINEAR_INTERPOLATION</imgResamplingMethod>
      <pixelSpacingInMeter>14.73</pixelSpacingInMeter>
      <pixelSpacingInDegree>1.3232184135080554E-4</pixelSpacingInDegree>
      <mapProjection>GEOGCS[&quot;WGS84(DD)&quot;, &#xd;
  DATUM[&quot;WGS84&quot;, &#xd;
    SPHEROID[&quot;WGS84&quot;, 6378137.0, 298.257223563]], &#xd;
  PRIMEM[&quot;Greenwich&quot;, 0.0], &#xd;
  UNIT[&quot;degree&quot;, 0.017453292519943295], &#xd;
  AXIS[&quot;Geodetic longitude&quot;, EAST], &#xd;
  AXIS[&quot;Geodetic latitude&quot;, NORTH]]</mapProjection>
      <alignToStandardGrid>false</alignToStandardGrid>
      <standardGridOriginX>0.0</standardGridOriginX>
      <standardGridOriginY>0.0</standardGridOriginY>
      <nodataValueAtSea>true</nodataValueAtSea>
      <saveDEM>false</saveDEM>
      <saveLatLon>false</saveLatLon>
      <saveIncidenceAngleFromEllipsoid>false</saveIncidenceAngleFromEllipsoid>
      <saveLocalIncidenceAngle>false</saveLocalIncidenceAngle>
      <saveProjectedLocalIncidenceAngle>false</saveProjectedLocalIncidenceAngle>
      <saveSelectedSourceBand>true</saveSelectedSourceBand>
      <outputComplex>false</outputComplex>
      <applyRadiometricNormalization>false</applyRadiometricNormalization>
      <saveSigmaNought>false</saveSigmaNought>
      <saveGammaNought>false</saveGammaNought>
      <saveBetaNought>false</saveBetaNought>
      <incidenceAngleForSigma0>Use projected local incidence angle from DEM</incidenceAngleForSigma0>
      <incidenceAngleForGamma0>Use projected local incidence angle from DEM</incidenceAngleForGamma0>
      <auxFile>Latest Auxiliary File</auxFile>
      <externalAuxFile/>
    </parameters>
  </node>
  <node id="Polarimetric-Speckle-Filter">
    <operator>Polarimetric-Speckle-Filter</operator>
    <sources>
      <sourceProduct refid="Multilook"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <filter>Refined Lee Filter</filter>
      <filterSize>5</filterSize>
      <numLooksStr>1</numLooksStr>
      <windowSize>7x7</windowSize>
      <targetWindowSizeStr>3x3</targetWindowSizeStr>
      <anSize>50</anSize>
      <sigmaStr>0.9</sigmaStr>
      <searchWindowSizeStr>15</searchWindowSizeStr>
      <patchSizeStr>5</patchSizeStr>
      <scaleSizeStr>1</scaleSizeStr>
    </parameters>
  </node>
  <node id="Write">
    <operator>Write</operator>
    <sources>
      <sourceProduct refid="Terrain-Correction"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>$output</file>
      <formatName>BEAM-DIMAP</formatName>
    </parameters>
  </node>
  <applicationData id="Presentation">
    <Description/>
    <node id="Read">
            <displayPosition x="14.0" y="52.0"/>
    </node>
    <node id="Apply-Orbit-File">
      <displayPosition x="91.0" y="53.0"/>
    </node>
    <node id="TOPSAR-Split">
      <displayPosition x="201.0" y="54.0"/>
    </node>
    <node id="Calibration">
      <displayPosition x="301.0" y="55.0"/>
    </node>
    <node id="TOPSAR-Deburst">
      <displayPosition x="409.0" y="56.0"/>
    </node>
    <node id="Subset">
      <displayPosition x="436.0" y="106.0"/>
    </node>
    <node id="Polarimetric-Matrices">
      <displayPosition x="403.0" y="150.0"/>
    </node>
    <node id="Multilook">
      <displayPosition x="437.0" y="195.0"/>
    </node>
    <node id="Terrain-Correction">
      <displayPosition x="568.0" y="249.0"/>
    </node>
    <node id="Polarimetric-Speckle-Filter">
      <displayPosition x="390.0" y="248.0"/>
    </node>
    <node id="Write">
      <displayPosition x="704.0" y="250.0"/>
    </node>
  </applicationData>
</graph>

Step3:对时序C2数据进行配准

SNAP中创建的流程图以及xml文件内容如下:
在这里插入图片描述

<graph id="Graph">
  <version>1.0</version>
  <node id="CreateStack">
    <operator>CreateStack</operator>
    <sources>
      <sourceProduct.2 refid="ProductSet-Reader"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <masterBands/>
      <sourceBands/>
      <resamplingType>NONE</resamplingType>
      <extent>Master</extent>
      <initialOffsetMethod>Orbit</initialOffsetMethod>
    </parameters>
  </node>
  <node id="Cross-Correlation">
    <operator>Cross-Correlation</operator>
    <sources>
      <sourceProduct refid="CreateStack"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <numGCPtoGenerate>200</numGCPtoGenerate>
      <coarseRegistrationWindowWidth>64</coarseRegistrationWindowWidth>
      <coarseRegistrationWindowHeight>64</coarseRegistrationWindowHeight>
      <rowInterpFactor>2</rowInterpFactor>
      <columnInterpFactor>2</columnInterpFactor>
      <maxIteration>2</maxIteration>
      <gcpTolerance>0.5</gcpTolerance>
      <applyFineRegistration>false</applyFineRegistration>
      <inSAROptimized>false</inSAROptimized>
      <fineRegistrationWindowWidth>64</fineRegistrationWindowWidth>
      <fineRegistrationWindowHeight>64</fineRegistrationWindowHeight>
      <fineRegistrationWindowAccAzimuth/>
      <fineRegistrationWindowAccRange/>
      <fineRegistrationOversampling/>
      <coherenceWindowSize>3</coherenceWindowSize>
      <coherenceThreshold>0.6</coherenceThreshold>
      <useSlidingWindow>false</useSlidingWindow>
      <computeOffset>false</computeOffset>
      <onlyGCPsOnLand>false</onlyGCPsOnLand>
    </parameters>
  </node>
  <node id="Warp">
    <operator>Warp</operator>
    <sources>
      <sourceProduct refid="Cross-Correlation"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <rmsThreshold>1.0</rmsThreshold>
      <warpPolynomialOrder>1</warpPolynomialOrder>
      <interpolationMethod>Bilinear interpolation</interpolationMethod>
      <demRefinement/>
      <demName/>
      <excludeMaster>false</excludeMaster>
      <openResidualsFile>false</openResidualsFile>
    </parameters>
  </node>
  <node id="Write">
    <operator>Write</operator>
    <sources>
      <sourceProduct refid="Warp"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>F:\Data\S1_Guangzhou\C2_features_Stack.dim</file>
      <formatName>BEAM-DIMAP</formatName>
    </parameters>
  </node>
  <node id="ProductSet-Reader">
    <operator>ProductSet-Reader</operator>
    <sources/>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <fileList>F:\Data\S1_Guangzhou\Reference.dim,$input</fileList>
    </parameters>
  </node>
  <applicationData id="Presentation">
    <Description/>
    <node id="CreateStack">
      <displayPosition x="154.0" y="101.0"/>
    </node>
    <node id="Cross-Correlation">
      <displayPosition x="248.0" y="100.0"/>
    </node>
    <node id="Warp">
      <displayPosition x="373.0" y="100.0"/>
    </node>
    <node id="Write">
      <displayPosition x="449.0" y="101.0"/>
    </node>
    <node id="ProductSet-Reader">
      <displayPosition x="24.0" y="99.0"/>
    </node>
  </applicationData>
</graph>

所有的文件可在C2_features_Stack文件夹中找到,后续处理可在matlab中进行

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值