Non-deterministic Gamma0 output with Terrain Flattening (RTC) across different sessions in SNAP 12

Dear SNAP Community and Developers,

I am writing to report a reproducibility issue with Sentinel-1 GRD processing in SNAP 12. I am getting different pixel values (Gamma0) for the exact same input file depending on the software session and the machine used.

The Issue:

  • Same Session (Consistent): If I run the graph, then run it again immediately within the same open SNAP session, the results are identical.

  • Restarted Session (Inconsistent): If I close SNAP, reopen it, and run the exact same graph on the exact same input data, the output pixel values change.

  • Different PC (Inconsistent): Running this exact graph on a different computer (also SNAP 12) yields different Gamma0 values compared to my machine.

Workflow: Read → Apply Orbit → Calibration (Beta0) → Speckle Filter (Refined Lee) → Terrain Flattening → Terrain Correction → Write.

Relevant Configuration: I am using an external DEM and NEAREST_NEIGHBOUR resampling. Below are the full parameter blocks for the geometry nodes where I suspect the variation is originating.

Terrain Flattening Node:

XML

<node id="Terrain-Flattening">
  <operator>Terrain-Flattening</operator>
  <sources>
    <sourceProduct refid="Speckle-Filter"/>
  </sources>
  <parameters class="com.bc.ceres.binding.dom.XppDomElement">
    <demName>External DEM</demName>
    <externalDEMFile>C:\DEM\output_SRTMGL1.tif</externalDEMFile>
    <externalDEMApplyEGM>true</externalDEMApplyEGM>
    <externalDEMNoDataValue>0.0</externalDEMNoDataValue>
    <demResamplingMethod>NEAREST_NEIGHBOUR</demResamplingMethod>
    <outputSimulatedImage>false</outputSimulatedImage>
    <additionalOverlap>0.1</additionalOverlap>
    <oversamplingMultiple>1.0</oversamplingMultiple>
  </parameters>
</node>

Terrain Correction Node:

XML

<node id="Terrain-Correction">
  <operator>Terrain-Correction</operator>
  <sources>
    <sourceProduct refid="Terrain-Flattening"/>
  </sources>
  <parameters class="com.bc.ceres.binding.dom.XppDomElement">
    <demName>External DEM</demName>
    <externalDEMFile>C:\DEM\output_SRTMGL1.tif</externalDEMFile>
    <externalDEMApplyEGM>false</externalDEMApplyEGM>
    <externalDEMNoDataValue>0.0</externalDEMNoDataValue>
    <demResamplingMethod>NEAREST_NEIGHBOUR</demResamplingMethod>
    <imgResamplingMethod>NEAREST_NEIGHBOUR</imgResamplingMethod>
    <pixelSpacingInMeter>10.0</pixelSpacingInMeter>
    <mapProjection>GEOGCS["WGS84(DD)", DATUM["WGS84", SPHEROID["WGS84",6378137.0,298.257223563]], PRIMEM["Greenwich",0.0], UNIT["degree",0.017453292519943295], AXIS["Geodetic longitude",EAST], AXIS["Geodetic latitude",NORTH]]</mapProjection>
    <alignToStandardGrid>true</alignToStandardGrid>
    <standardGridOriginX>0.0</standardGridOriginX>
    <standardGridOriginY>0.0</standardGridOriginY>
    <nodataValueAtSea>true</nodataValueAtSea>
    <saveSelectedSourceBand>true</saveSelectedSourceBand>
    <outputComplex>false</outputComplex>
    <applyRadiometricNormalization>false</applyRadiometricNormalization>
    <saveGammaNought>false</saveGammaNought>
    <saveSigmaNought>false</saveSigmaNought>
    <saveBetaNought>false</saveBetaNought>
    <incidenceAngleForGamma0>Use projected local incidence angle from DEM</incidenceAngleForGamma0>
  </parameters>
</node>

Has anyone observed this behavior or is there a setting to enforce strict deterministic results across sessions?

1 Like

@lveci can you take a look at this issue?

Thanks!