TerraSAR-X Coregistration Issues

Goodmorning STEP-forum,

I’ve been working on the coregistration of a TSX-stack. The area at which the images are taken should be ideal for coregistration (dessert, no water), but I still run into problems using the following settings:

[EDIT] I am using the latest master commit of the S1-TBX at the time of writing.

  • number of GCP: 2000
  • Coarse Window Width: 1024
  • Coarse Window Height: 256
  • rowInterpFactor: 2
  • columnInterpFactor: 2
  • Max Iterations: 10
  • GCP-Tolerance: 0.5
  • Apply Fine Registration: True
  • InSAR optimized: True
  • Fine Window Width: 64
  • Fine Window Height: 64
  • Fine Acc Azimuth: 8
  • Fine Acc Range: 8
  • Fine Oversampling: 32
  • Coherence Window Size: 3
  • Coherence Threshold 0.6
  • Use Sliding Windows: False
  • Compute Offset: True
  • only GCPs on land: False

The dataset should be highly coherent and coregistration should be easy. The S1-TBX gives me the following warnings for most images:

WARNING: org.esa.snap.SnapCoreActivator: org.esa.snap.core.gpf.OperatorSpi: Provider org.esa.s1tbx.insar.gpf.coregistration.OffsetTrackingOp2$Spi not found
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)35.981465654685465
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)642.8403495884302
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)12.112529282806449
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)31.97492842494909
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)155.67591438999077
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)20.499219740282868
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)19.11723044116283
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)22.44147589421162
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)15.076098816710177
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)16.38289024306048
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)12.961462160281673
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)23.977266142422835
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)810.1062948151841
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)40.89261601786331
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)93.3817585980393
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)40.86450229831874
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)35.58445046187099
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)27.0724811161263
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)29.38628935327801
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)13.901837899347292
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)17.81486172457438
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)11.551635158788757
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)43.12355299288195
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)43.40853977495978
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)29.786121716021118
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)28.26399736457122
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)10.398781429248407
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)25.463719220741083
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)21.170920161597312
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)10.398781429248407
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)25.463719220741083
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)21.170920161597312
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)26.915040962699866
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)311.9608477957237
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)27.560331268895514
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)14.24135419762932
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)15.07248433638971
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)12.469999250443978
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)40.47900453998409
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)19.321822031033008
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)19.073457158962775
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)27.16864344616479
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)40.80910081551713
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)27.747470590811925
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)468.40117293963226
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)17.5941017287031
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)10.848749812029869
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)646.8519708217658
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)28.34272023438011
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)482.94078325411704
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)14.055081863453955
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)15.07548653155461
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)424.7076262898354
WARNING: org.jlinda.core.coregistration.CPM: COREGPM: Overall Model Test, Lines = {} is larger than 10. (Suggest model or a priori sigma not correct.)360.569874625087
The specified region, if not null, must intersect with the image`s bounds.
The specified region, if not null, must intersect with the image`s bounds.
org.esa.snap.core.gpf.OperatorException: The specified region, if not null, must intersect with the image`s bounds.
        at org.esa.snap.core.gpf.graph.GraphProcessor$GPFImagingListener.errorOccurred(GraphProcessor.java:373)
        at com.sun.media.jai.util.SunTileScheduler.sendExceptionToListener(SunTileScheduler.java:1646)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:921)
        at javax.media.jai.OpImage.getTile(OpImage.java:1129)
        at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085)
        at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
        at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:406)
        at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:392)
        at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:73)
        at javax.media.jai.SourcelessOpImage.computeTile(SourcelessOpImage.java:137)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
        at javax.media.jai.OpImage.getTile(OpImage.java:1129)
        at com.sun.media.jai.util.RequestJob.compute(SunTileScheduler.java:247)
        at com.sun.media.jai.util.WorkerThread.run(SunTileScheduler.java:468)
Caused by: org.esa.snap.core.gpf.OperatorException: The specified region, if not null, must intersect with the image`s bounds.
        at org.esa.snap.engine_utilities.gpf.OperatorUtils.catchOperatorException(OperatorUtils.java:421)
        at org.esa.s1tbx.insar.gpf.coregistration.WarpOp.computeTile(WarpOp.java:464)
        at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:80)
        at javax.media.jai.SourcelessOpImage.computeTile(SourcelessOpImage.java:137)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
        ... 11 more

From this I can make up that there is problem in line (azimuth) direction, although the windows-sizes should be sufficient. There is no error when I only process three slave images, but still the coregistration seems to be off as can be seen in the following interferograms:

Does anyone know how to address this issue? I added a zip of the metadata.

Reinier
SkyGeo

testrun_3im.zip (146.2 KB)

2 Likes

In a newer version of SNAP I get the same errors. I use these hashes:

s1tbx SHA a80aa329
snap-desktop SHA 391b06e7
snap-engine SHA 307a5abb
snap-installer SHA 4f029bd8

Does anyone have an idea what goes wrong?

Regards,

Reinier
SkyGeo

Dear SAR people:

I was wondering if anyone has been able to accurately corregister 2 TerraSAR-X images. The results I am getting are off. I have use the paremeters mentioned on this post and the results arent very good. Was wondering if anyone has a set of paramters that have achieve good results or any suggestions.

Kind Regards,
Daniela Palacios

you can try the DEM assisted coregistration as an alternative.

Hello,
Indeed I tried it, but the ERMS comes out really high.
I am going to find a flat area and see how is performing.

I am using the following approach which seems to work well with coregistering 2+ TerraSAR-X images, however i get a high absolute georeferencing error as visible when i overlay the result with a background satellite layer (see image below showing high coherence > 0.95 areas in red).

Anyone has some ideas on why the georeferencing is so much off?

<graph id="Graph">
  <version>1.0</version>
    <node id="ProductSet-Reader">
    <operator>ProductSet-Reader</operator>
    <sources/>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <fileList>$input1,$input2,$input3</fileList>
    </parameters>
  </node>
  <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>128</coarseRegistrationWindowWidth>
      <coarseRegistrationWindowHeight>128</coarseRegistrationWindowHeight>
      <rowInterpFactor>2</rowInterpFactor>
      <columnInterpFactor>2</columnInterpFactor>
      <maxIteration>10</maxIteration>
      <gcpTolerance>0.5</gcpTolerance>
      <applyFineRegistration>true</applyFineRegistration>
      <inSAROptimized>true</inSAROptimized>
      <fineRegistrationWindowWidth>32</fineRegistrationWindowWidth>
      <fineRegistrationWindowHeight>32</fineRegistrationWindowHeight>
      <fineRegistrationWindowAccAzimuth>16</fineRegistrationWindowAccAzimuth>
      <fineRegistrationWindowAccRange>16</fineRegistrationWindowAccRange>
      <fineRegistrationOversampling>16</fineRegistrationOversampling>
      <coherenceWindowSize>3</coherenceWindowSize>
      <coherenceThreshold>0.6</coherenceThreshold>
      <useSlidingWindow>true</useSlidingWindow>
      <computeOffset>true</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>0.05</rmsThreshold>
      <warpPolynomialOrder>1</warpPolynomialOrder>
      <interpolationMethod>Cubic convolution (6 points)</interpolationMethod>
      <demRefinement>false</demRefinement>
      <demName>SRTM 3Sec</demName>
      <excludeMaster>false</excludeMaster>
      <openResidualsFile>true</openResidualsFile>
    </parameters>
  </node>
  <node id="Write">
    <operator>Write</operator>
    <sources>
      <sourceProduct refid="Warp"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>$target1</file>
      <formatName>BEAM-DIMAP</formatName>
    </parameters>
  </node>
  <applicationData id="Presentation">
    <Description/>
    <node id="CreateStack">
      <displayPosition x="185.0" y="112.0"/>
    </node>
    <node id="Cross-Correlation">
      <displayPosition x="168.0" y="177.0"/>
    </node>
    <node id="Warp">
      <displayPosition x="195.0" y="247.0"/>
    </node>
    <node id="Write">
      <displayPosition x="196.0" y="310.0"/>
    </node>
    <node id="ProductSet-Reader">
      <displayPosition x="163.0" y="41.0"/>
    </node>
  </applicationData>
</graph>

`

which DEM did you use for terrain correction? If the DEM quality is too low (90 m SRTM is maybe not enough for 3 m TerraSAR-X). I would always use SRTM 1Sec wherever available.

Thanks @ABraun for the remark:

I was indeed using a “low resolution” DEM, the SRTM 3Sec. After updating the processing chain DEM to SRTM 1Sec HGT i am able now able to get a correct orthoprojection. The issue was then indeed caused by the “low resolution” DEM. In the figures below you can see the coherence map in the same hilly area shown before and in a flat / low elevation area, both seem to have a correct projection:

Does anyone know about open-source DEMs with global or at-least US coverage and spatial resolution significantly better than 30-m? [EDIT: this question is not relevant anymore as SRTM 1Sec HGT seem to be adequate for TerraSAR-X orthoprojection in the US]

For reference i am creating these maps using two graphs in series:

  1. Coregistration/georeferencing a stack of images:
<graph id="Graph">
  <version>1.0</version>
    <node id="ProductSet-Reader">
    <operator>ProductSet-Reader</operator>
    <sources/>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <fileList>$input1,$input2,$input3</fileList>
    </parameters>
  </node>
  <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>Product Geolocation</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>2000</numGCPtoGenerate>
      <coarseRegistrationWindowWidth>128</coarseRegistrationWindowWidth>
      <coarseRegistrationWindowHeight>128</coarseRegistrationWindowHeight>
      <rowInterpFactor>2</rowInterpFactor>
      <columnInterpFactor>2</columnInterpFactor>
      <maxIteration>10</maxIteration>
      <gcpTolerance>0.5</gcpTolerance>
      <applyFineRegistration>true</applyFineRegistration>
      <inSAROptimized>true</inSAROptimized>
      <fineRegistrationWindowWidth>32</fineRegistrationWindowWidth>
      <fineRegistrationWindowHeight>32</fineRegistrationWindowHeight>
      <fineRegistrationWindowAccAzimuth>16</fineRegistrationWindowAccAzimuth>
      <fineRegistrationWindowAccRange>16</fineRegistrationWindowAccRange>
      <fineRegistrationOversampling>16</fineRegistrationOversampling>
      <coherenceWindowSize>3</coherenceWindowSize>
      <coherenceThreshold>0.6</coherenceThreshold>
      <useSlidingWindow>true</useSlidingWindow>
      <computeOffset>true</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>0.05</rmsThreshold>
      <warpPolynomialOrder>3</warpPolynomialOrder>
      <interpolationMethod>Bilinear interpolation</interpolationMethod>
      <demRefinement>true</demRefinement>
      <demName>SRTM 1Sec HGT</demName>
      <excludeMaster>false</excludeMaster>
      <openResidualsFile>true</openResidualsFile>
    </parameters>
  </node>
  <node id="Write">
    <operator>Write</operator>
    <sources>
      <sourceProduct refid="Warp"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>$target1</file>
      <formatName>BEAM-DIMAP</formatName>
    </parameters>
  </node>
  <applicationData id="Presentation">
    <Description/>
    <node id="CreateStack">
      <displayPosition x="185.0" y="112.0"/>
    </node>
    <node id="Cross-Correlation">
      <displayPosition x="168.0" y="177.0"/>
    </node>
    <node id="Warp">
      <displayPosition x="195.0" y="247.0"/>
    </node>
    <node id="Write">
      <displayPosition x="196.0" y="310.0"/>
    </node>
    <node id="ProductSet-Reader">
      <displayPosition x="163.0" y="41.0"/>
    </node>
  </applicationData>
</graph>
  1. Creating the coherence maps (input of 2. is the output of 1.):
<graph id="Graph">
  <version>1.0</version>
  <node id="Read">
    <operator>Read</operator>
    <sources/>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>$input1</file>
      <formatName>BEAM-DIMAP</formatName>
    </parameters>
  </node>
  <node id="Coherence">
    <operator>Coherence</operator>
    <sources>
      <sourceProduct refid="Read"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <cohWinAz>2</cohWinAz>
      <cohWinRg>4</cohWinRg>
      <subtractFlatEarthPhase>true</subtractFlatEarthPhase>
      <srpPolynomialDegree>5</srpPolynomialDegree>
      <srpNumberPoints>501</srpNumberPoints>
      <orbitDegree>3</orbitDegree>
      <squarePixel>false</squarePixel>
      <subtractTopographicPhase>true</subtractTopographicPhase>
      <demName>SRTM 1Sec HGT</demName>
      <externalDEMFile/>
      <externalDEMNoDataValue>0.0</externalDEMNoDataValue>
      <externalDEMApplyEGM>true</externalDEMApplyEGM>
      <tileExtensionPercent>100</tileExtensionPercent>
    </parameters>
  </node>
  <node id="Terrain-Correction">
    <operator>Terrain-Correction</operator>
    <sources>
      <sourceProduct refid="Coherence"/>
    </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>0.0</pixelSpacingInMeter>
      <pixelSpacingInDegree>0.0</pixelSpacingInDegree>
      <mapProjection>GEOGCS[&quot;WGS84(DD)&quot;, 
  DATUM[&quot;WGS84&quot;, 
    SPHEROID[&quot;WGS84&quot;, 6378137.0, 298.257223563]], 
  PRIMEM[&quot;Greenwich&quot;, 0.0], 
  UNIT[&quot;degree&quot;, 0.017453292519943295], 
  AXIS[&quot;Geodetic longitude&quot;, EAST], 
  AXIS[&quot;Geodetic latitude&quot;, NORTH]]</mapProjection>
      <alignToStandardGrid>false</alignToStandardGrid>
      <standardGridOriginX>0.0</standardGridOriginX>
      <standardGridOriginY>0.0</standardGridOriginY>
      <nodataValueAtSea>false</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>true</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="Write">
    <operator>Write</operator>
    <sources>
      <sourceProduct refid="Terrain-Correction"/>
    </sources>
    <parameters class="com.bc.ceres.binding.dom.XppDomElement">
      <file>$target1</file>
      <formatName>GeoTIFF-BigTIFF</formatName>
    </parameters>
  </node>
  <applicationData id="Presentation">
    <Description/>
    <node id="Read">
      <displayPosition x="170.0" y="121.0"/>
    </node>
    <node id="Coherence">
      <displayPosition x="349.0" y="122.0"/>
    </node>
    <node id="Terrain-Correction">
      <displayPosition x="569.0" y="122.0"/>
    </node>
    <node id="Write">
      <displayPosition x="753.0" y="120.0"/>
    </node>
  </applicationData>
</graph>

Could be worth a try with the ALOS World DEM
http://www.eorc.jaxa.jp/ALOS/en/aw3d30/index.htm 1

Originally available at 5 meters, yet the free 30 m data are often better than SRTM

Thanks @ABraun for the information about the ALOS World 30-m DEM. It looks like your previous recommendation on using SRTM 1Sec HGT was correct = solved the issue (i was plotting the same old map with the 90-m DEM). I have updated my post above which seems to be a valid way to co-register and orthoproject a stack of TerraSAR-X 3-m SAR images.

1 Like