Sentinel-1 calibration and local incidence angle

Hello again,

I’m opening a new thread because this topic seems quite important to me, and actually I wasn’t aware of it.

If I understood correctly, the local incidence angle is not taken into account when calibrating+normalizing Sentinel-1 data?
Even though you select “use local incidence angle”?

Found within the lines in another discussion between @carlomarin and @junlu, here

Sorry if I misunderstood.

Ciao Adamo,

As far as I understood there are two ways when we consider SLC data:

  1. You can calibrate using the LUT provided in the metafile in the beginning of your pre-proc. With this LUT you can obtain beta, sigma, gamma nought calibrated values in slant-range. Then when you apply a geocoding (range doppler for instance) you get your image reprojected in geo cordinates. It seems in this case the incidence angle or normalized incidence angle is not used at all.

  2. You do not calibrate at the beginning of you pre-proc. When you arrive to the geocoding you can select “apply radiometric calibration”. This point I don’t know what is happening :stuck_out_tongue: but it seems the LUT is used without the information from the LIA.

In order to understand how to proceed it is necessary to understand how the LUT for sigma nought and gamma nought is calculated (i.e., are they refered to the ellipsoid?). Otherwise the best would be to calculate beta nought and then multiply it by sin(thetaLIA) after geocoding.

In summary these points should be clarified:

  1. Only LUT without information from the LIA is used when SLC S1 data are used both applying calibration before and during terrain correction (range doppler)?
  2. LUTs refered to ellipsoid?

I will try to go through the code but an help from the developers is very welcome in this case :smile:
Thanks carlo

Yes, you are right. The current implementation of the calibration (in “Calibrate” or in “Range Doppler”) uses only information of the LUT, No information of local incidence angle is used. The LUTs provided with the product, I think, are referred to ellipsoid.

Hopefully in future the radiometric calibration in “Range Doppler” can be replaced by correction using local incidence angle. The LUT includes not only incidence angle correction, but also elevation antenna pattern correction, range spreading loss correction, and product final scaling. To replace it, as you said, it is necessary to understand how each term is calculated.

1 Like

The calibration LUTs are using the Digital Number to convert certain pixels in the product, then interpolating for the surrounding values. Converting the measurements values into the wished plane coefficients. For instance the sigma0 the result is the reflection rate of the surface plane.

How does it work:
Radiometric Calibration

What Range-Doppler TC does, in my opinion, is applying the standard calibration before reprojecting the raster. This procedure is independent from the incidence angle or using metadata to do the calibration in focus on the original data.

As for the incidence angle mystery. Incidence angle for the measurement is provided with each acquisition, similar to the coordinates, it is dependent on the signal reflection in range.
The incidence angle from the TC is only the incidence angle provided by the product colliding with the DEM. From this you can see the “shade” on one or the other side of a mountain range for instance (depending on the ascend or descend of the satellite).
This outputs the resulting band called “local incidence angle”, projected on particular EPSG “projected local incidence angle.”

For the relation between calibration values and incidence angle, the key study is so called “incidence angle dependency”, where you can calculate a function for your calibration values dependent on the incidence angle value at the position of your measurement over a period of time. From this a pattern can be read and the calibration values can be improved.
However I am not aware of such an enterprise in the after-launch lifetime of Sentinel 1, such a study was done in a study by the TU Wien when they were simulating the performance of the Sentinel 1 based on the ASAR Envisat data.

These are my personal findings, I hope it was some help and feel free to correct any mistakes.

1 Like

Dear junlu,

From this document you can easily derive how to calculate sigma nought NORLIM and sigma nougth ellipsoid from sentinel data (using the Small terminology D. Small, “Flattening gamma: Radiometric terrain correction for SAR imagery,” IEEE Trans. Geosci. Remote Sens., vol. 49, no. 8, pp. 3081–3093, 2011)

I think this should be better clarify in the SNAP help and correctly implemented in the code. Please, be careful in your calculation of ellipsoidal incidence angle (eq. 3.2.6 should be used in order to be sure of using the same ellipsoid). Let me know if I can help somehow.

Thank again for your work


Ciao Carlo,
nice to “meet” you again! :smiley:
Thanks for resuscitating this post.

I didn’t have time to check again the whole procedure (calibration+terrain correction) but I’m following the discussion.
Regarding the paper you cite, isn’t it already implemented in SNAP?
In Radar --> Radiometric --> Radiometric Terrain Flattening (or something like this, I haven’t SNAP here now).

Actually I was asking myself why it was separated from the “standard” calibration procedure.


Yes the paper is about the flattening gamma. However the Small’s (great) job covers some basic concepts that are useful when speaking also about “standard” radiometric correction and geocoding procedure…

Yes I also think it would be more convenient to have everything implemented under the same hat of “geocoding and radiometric calibration” but SNAP is work in progress project… let see what will happen in the future… For sure at a certain point a re-organization of the menu should be addressed :stuck_out_tongue:


1 Like

@junlu is it possible to use the beta LUT as default instead of sigma LUT when ask for “save as complex” in the calibration procedure? Does this make sense to you?

Hi everyone,
I’m using ENVISAT ASAR data and I don’t know how the incidence angle correction works (the step before calibration).
Maybe someone can help me …


Hi Max,
The incidence angle correction is done in calibration together with other corrections such as antenna pattern correction. The incidence angles are computed from the tie point grid of the product. They are not local incidence angles. For details, please see the on-line help for calibration operator.


Thanks for your answer !
Do you know if the GEOLOCATION_GRID_ADS comes with the product ( N1 data) or is given by another file (an external file like XCA file for example) ?


The geolocation grid is included in the N1 product itself. See the ASAR product specification at

I didn’t know this document, it’s very usefull thanks.

I’m trying to extract incidence angle of the ground control points from N1 products with python. Maybe someone knows how can I get information about incidence angle included in the GEOLOCATION_GRID_ADS ?
With gdal I can read latitude and longitude of the ground control points but nothing about incidence angle.

Thanks for your answer

If you open the product with the SNAP python API and access the tie point grids, you’ll have the interpolated incidence angle for every pixel.

Hi everyone and thank you Iveci for your answer,
I understand that incidence angle for every pixel is obtained by interpolation of the tie point grids, but I don’t know how SNAP manages to access incidence angle of the ground control points.


If you want to get the original points from the product, get them from the metadata.


For ENVISAT there are 11 points across range for the first and last lines.

Hi Carlo,

I have the same question about the I, Q in beta LUT. Did you find a solution in your case?

At the moment, it is only possible to save complex output in case of sigma correction. I would like to get the complex values when applying the beta correction.



Unexpectedly SNAP does not implement this option. You got values calibrated using the sigma LUT which is derived considering a reference ellipsoid. You have 3 options: write your own piece of code, using other software, or making some boring bandmathing to derive first the beta LUT and then apply it to the complex case :frowning:

Hi Carlo,

Thanks for your prompt answer. In the ESA documentation about the radiometric calibration, they show how to calculate sigma, beta and gamma nought, but they do not mention how to apply those calibration on I, Q instead of the intensity.

SNAP allows to save the sigma calibration in complex format (I, Q), but I could not find any explanation on how this operation is done. Do you know any document where it is explained?



(I,Q) can be expressed as Intensity * e^(i * Phase)