Offset Tracking with TerraSAR-X Data

I have three TerraSAR X images with about 10 days seperation between each. Ultimately I want to derive glacier velocity fields for an outlet glacier in Iceland. I am having a number of problems however. I will describe my method below:

  1. Calibrate and terrain correct the TerraSAR X images. I used the default settings for the calibration and I used the national LiDAR DEM of Iceland for the terrain correction. I am guessing (I have no formal education in SAR analysis) that for offset tracking I would not want to filter the speckle? I am not sure if this is correct?

  2. Co-register and stack the images. I tried using the DEM assisted co-registration method on two of the images however I got a zero in red appear at the bottle of the window, and the output created seemed to be empty. Does anyone have any idea why this could be? After visually inspecting in ArcGIS the georeferencing looked good, so I just stacked the images.

  3. Offset tracking - I used both the default settings as well as setting a smaller window size to reflect TerraSAR-X having a higher spatial resolution. For both settings however I get a series of red crosses with (as far as I can see) no data.

What am I doing incorrectly? Any help would be greatly appreciated.

Additionally - is there no way to apply precise orbits for TerraSAR-X data in the same way you would with Sentinel-1?


1 Like

A few suggestions:

‘About 10 days’ sounds like you have data from different tracks, right? For same-track data the temporal gap would be exactly 14 days.

Different tracks would mean that you are using data with different incidence angles it looking directions.
This could be the reason why coregistering didn’t work.

If you have repeat-pass data of same track I would try coregistering as a second step directly after calibration.
But be careful about the polynomial and de-stretching of your data as it might already ‘correct’ the offsets or shifts you are searching for. Check the coregistration vectors to see if your area of interest got deformed during the process.

There are many options for the coregistration module bit I would try getting a good stack with it before terrain correction and apply the offset tracking module directly on the slant range data.

Also subsetting to a smaller extent before the offset tracking helped in many cases.

If you have data of different tracks try multi-looking (1 look) to get squared pixels and then try coregistration.

I agree that speckle filtering wouldn’t be a good choice as you are searching for fine shifts in intensity.

As far as I know TerraSAR-X doesn’t need orbit files.

Thanks for the detailed response. The dates are 24th September, 5th October and 16th October but all three images are on track 56, so doesn’t that mean that they are on same track acquisitions?

Your advice was helpful, I calibrated each image, performed a DEM co-registration and then the offset tracking. The results I get are a bit patchy though, I was wondering how the grid spacing and registration should be changed to fit a TerraSAR-X image instead of a Sentinel 1 image?

Thank you very much,


yes, in this case all of your data is of the same track. That means that you don’t need to worry about looking directions or incidence angles.

Can you post a screenshot of the results?

I don’t know what the best resolution is for your application but it kind of depends on the objects that typically change during movement in the image. So if small stones on a glacier can be used as a proxy for surging the resolution should be able to capture them. But if you investigate larger land movements other pixel resolutions may be suitable.

You can also calculate coherence between your images to see which areas changed the most (low coherence). This may indicate where you can expect results. You could mask out areas with high coherence, for example to limit the analysis to the changing surfaces.

I tried generating a coherence image, but there was no coherence over the glacier at all. This glacier flows at up to 200 metres a year so I guess that the maximum displacement on a set of images with 11 days seperation would be around 6 metres. I get OK results over the glacier tongue (see screenshot) but further up the glacier I have a region of maximum velocity followed by a region of zero velocity.

did you try masking out the area of the glacier before the offset tracking?

At areas of strong changes in backscatter intensity ‘wrong’ shifts could be identified by the offset module.

I didn’t try this, but as I am interested in working out how fast the ice is flowing would this be necessary? I was more interesting in why I am getting no displacements over the upper ice surface, but I now that i have got a working work pipeline I will play around with the parameters. Thank you every so much for the help!

Hi ABraun,
Just two quick questions. I have generated some offsets that I am happy with and have exported the raster as a TIF. Is there a way I can export the vectors of the offset too? I can visualse them in SNAP but when I try use “geometry as shapefile” I get an error message saying “current fid index is null, next must be called before write”

Secondly, I understand most of the process, but I am a bit confused by the DEM assisted co-registration and how it works. Since the ice is flowing, is it not advisable/possible to mask out the glacier and only co-register the “stable” parts of the image?



I’m not sure about the export to vector error. Could you create a small subset and see if the error still happens on the subset and then send a link to the subset.

The DEM-assisted coregistration works on the geometry of the scene using the orbits and dem. It doesn’t care if something is moving in the images. It only aligns thw two scenes together based on the geometries. This only works if you have accurate information from the orbit vectors and DEM.

Thanks for the response. I tried subsetting the image but it seems to distort the displacement vectors (see below for before and after subsetting). Additionally I still cannot export the vectors as I get the same error message. I tried terrain correcting the offsets but then I get just the magnitude as a raster and not the vectors.



Since SNAP can display vectors with magnitude and direction, it must have X and Y component inherently.
It would be great helpful if developer would consider to add an “export X and Y component raster layers” function for post-processing’s convenience since it is convention in glaciological research community.


I met the same problem as described in “2)”.
I am using ALOS-2 L1.5 Range Detected data.
Could you please help me to solve this problem?

Hi Hillgrey,
I’m not an expert sadly but I fixed the problem following the advice of ABraun, of co-registering the data before terrain correcting it (terrain correct should be the last step). I have not tried with ALOS data, but it works with TerraSAR-X data and Sentinel 1 imagery.

Thanks bro076!

Your TerraSAR-X data are SLC (complex data) or Range Detected (only contains amplitude information without phase)?

What’s more, can you share some experience on offset tracking result interpreting and visualization? I do not know how to see the directions of the movement in offset tracking result I get using S-1 data although I followed the “offset tracking tutorial”. I did see the GCP Movement vector in the “Layer manager” but, is the vector the real surface movement direction?

The data was provided in SLC format yes. My steps were to calibrate each image before the co-registration, then subsetitng to a small test area. I seem to remember that I got the best results using a small cross correlation threshold (I think 0.05), I don’t remember the other parameters that I tweaked, but by repeating on a small subset it was easy to figure out what worked best before applying it to the whole image. I also used this tutorial which was helpful

As for interpretation, once I had smooth looking displacements on the glacier and near zero displacements on the stable ground I exported the raster to GIS. Yes the vectors of the displacements are in the layer manager, I couldn’t find a way of exporting them as a shapefile which is a shame, as that’s normally the basis for filtering and cleaning up velocites.

It’s also possible to perform offset tracking on orthorectified SAR imagery using CIAS which is freely available (

Dear bro076,

Your uploaded information is greatly appreciated. That really helps!

I will surely share my result as soon as I get reasonable result for land deformation monitoring caused by a huge chemical explosion in China to see whether offset tracking method works.

I have tried InSAR method but sadly, it gives no useful information.

Thanks and best regards.

Dear bro076,

I am having the similar problems in estimating the glacier velocities in Himalayan region. I applied different windows size and I got the some patched velocity not necessary within the boundary of the Glaciers (See Screenshot). Also, I have a kind of + sign all along the output and can not see the flow direction vector. What might be the issues, could you suggest any better ideas for getting good results.

Thanks in advance
Best regards,

Hi mohan,
I’ve also been trying for the Himalayas without much success using sentinel 1 imagery. There are a couple of papers that do this though, one used imagery with 24 day separation but this was on a surging glacier. When I’ve used optical imagery for glacier velocities the Himalayan glaciers have needed a larger temporal gap (I used a year separation with Landsat for example) than fast flowing glaciers in Iceland, so try using images with a few months or more separation. Also the timing is important so try to use data when there’s minimal snow cover on the glaciers, so at least for Nepal that’s September to mid November ish. Would be interested to see if you get it working!

Dear bro076,

Thanks for your response. I also tried the images with more than 24 days gap, but still getting the similar results. I don’t know but will continue to work on it and will be back to you if I get some better results.