Stacking S1 and S2 data


I would like to bring back a topic that has been addressed a while ago in this forum but I find that no clear answer is available yet. I have a dataset of S1 and S2 images:

  • For S2, I am re-sampling and subsetting to my ROI
  • For S1, I am pre-processing the IW GRD products in SNAP using the following chain: apply orbit file, calibration, speckle filter, terrain correction (including UTM projection) and subset (to the same ROI as before).

My doubt is about stacking both datasets after that. Based on some previous discussion on this forum, I have seen that some people have tried the corregistration tool available for SAR.

But based on those replies:

However, based on this post

It seems in that case there was an offset of around 40 m when doing the terrain correction to S1 images and then stacking with Sentinel-2

So, what should be the procedure or at least the one leading to a higher accuracy? How can we check the accuracy (visualizing the overlapping images, adding some control points with known coordinates, etc.)

Once S1 images are terrain corrected, re-projected in UTM (as S2) and stacked together with S2, I guess the geo-location accuracy of overlapping S1/S2 pixels in the stack is defined by the orthorectification algorithm.

Which level/order of accuracy can we expect in terms of pixel alignment? (sub-pixel?)

Thanks for leaving your comment!


1 Like

Done correctly the accuracy is sub-pixel. Use collocate after the S-1 image has been terrain corrected.

@mengdahl, what do you mean by done correctly?

Terrain-correct the SAR image into the same map-geometry and pixel size as the optical image , then collocate.

Which component of the terrain correction/map projection is leading to such high accuracy without co-registering both images?

accuracy of terrain correction depends on the quality of the DEM and probably also the the quality of the SAR image’s metadata.

1 Like

SAR has inherently very high geometric accuracy (centimeter-level) provided that the auxiliary data is of high quality (like it is for S-1 for example).

1 Like

Achieving centimeter accuracy presumes that one perform additional corrections for finer perturbations like atmospheric path delay, frame shift, and solid Earth tides. AFAIK, these are not included in the SNAP s1tbx processing.

1 Like

The GeFolki Coregistration is now availavle in SNAP and allows coregistration of data of various sources (optical, radar, lidar):

1 Like

Dear ABraun, did you succeed with GeFolki? Could you share experience?

Thank you.

I did not pursue this further yet, sorry.

Co-location of S2 and terrain corrected S1 should be straightforward - there should be no need to use GeFolki in the standard case.

An alternative way to snap Sentinel-1 GRDH pixel grid to Sentinel-2 pixel grid is to set the ‘standardGridOrigin’ of the output Sentinel-1 product when applying the Range Doppler Terrain Correction.
This could be done by setting <standardGridOriginX> and <standardGridOriginY> parameters in the Range Doppler Terrain Correction operator.

I believe this solution could reduce as less as possible the introduction of artifacts. Later, a stacking operator should be used in order to stack together (multitemporal) Sentinel-1 and Sentinel-2 data.

I have shared a GPF graph that is preprocessing Sentinel-1 GRDH data taking into account this solution to snap output images to Sentinel-2 grids:


1 Like

I have problem with stacking GRD data. I get the error : "please add source product ", I include the graph and the error pictures, do you have nay suggestions? I already processed and train-corrected the GRD data.

Is there a reason why you do this in a graph? In your screenshot there is just Read-Stack-Write, so this could be easier done (and probably avoiding the error) with the stack operator alone.

I want to automatize the process later in a bash file thats the reson I want to do it in a garph. I am not sure if it is possible in SNAP

ah, okay. I don’t know that actually but it should be something like this: How to Use gpt for the step CreatStack

About the error: Does it go away if you switch to the second or third tab and then back? I had this every now and then (basically the graph just had to update all parameters).

1 Like