Incidence Angle data flow
This dataflow is implemented in S1IAMap program.
S1 Tiling processes by looping on all required S2 tiles. For each S2 tile:
It downloads precise orbit files (EOF) that cover the specified time range and that match the specified S1 platform. The download is done on condition the requested relative orbit number is not found in the EOF files already available in the eof data cache.
Then, it makes sure the requested associated IA maps exist, it:
produces an image of ECEF coordinates for the ellipsoid surface points and their associated satellite positions in the S2 geometry,
computes the normal of each ellipsoid surface point,
computes the requested IA maps of each point.
Incidence Angle specific processings

Tasks for generating Ellipsoid Incidence Angle map on 31TCH, orbit 110
Compute ECEF Ellipsoid surface and satellite positions on S2
- Inputs:
- Output:
ECEF WGS84 ellipsoid surface and satellite positions on the S2 tile.
- OTBApplication:
SARComputeGroundAndSatPositionsOnEllipsoid
- StepFactory:
s1tiling.libs.otbwrappers.ComputeGroundAndSatPositionsOnEllipsoid
This step computes the WGS84 ellipsoid surface positions of the pixels in the S2 geometry, and searches their associated zero doppler to also issue the coordinates of the SAR sensor.
All coordinates are stored in ECEF.
Normals computation on Earth Ellipsoid
- Input:
None
- Output:
None: chained in memory with IA maps computation
- OTBApplication:
ExtractNormalVectorToEllipsoid OTB application (developed for the purpose of this project)
Note
Beware, this OTB application isn’t distributed with OTB yet. It has to be installed specifically on your machine. It will be already installed in the docker images though.
- StepFactory:
This step computes the normal vectors on Earth ellipsoid surface, in the MGRS S2 geometry.
Details about Ellipsoid normal vector computation
Ellipsoid quadratic surface is defined in Cartesian coordinates as (wikipedia):
where \(a\), \(b\), and \(c\) are the lengths of the semi-axes.
At point \(P \left( \begin{smallmatrix}X \\ Y \\ Z \end{smallmatrix}\right)\), surface normal is parallel to:
The WGS84 datum surface is an oblate spheroid – wikipedia
This implies that in (1) that \(a = b\). Also, \(c = a(1-f)\) where \(f\) is the flattening. Both \(a\) and \(1/f\) are precisely defined for WGS84.
We also know that given latitude \(\phi\) and longitude \(\lambda\), we can compute the ECEF coordinates in the following way:
Injecting (3) into (2) for \(h=0\), we obtain:
As \((\cos{\phi} \cos{\lambda})^2 + (\cos{\phi} \sin{\lambda})^2 + (\sin{\phi})^2 = 1)\), the normal vector is:
Which matches Converting latitude/longitude to n-vector (wikipedia)
Ellipsoid IA maps computation
- Input:
A XYZ Cartesian coordinates file of ellipsoid surface positions, and of satellite positions
and the associated normals, chained in memory from WGS84 Normals computation
- Output:
Incidence Angle map, and/or cosine, sine and tangent IA maps
- OTBApplication:
SARComputeIncidenceAngle OTB application (developed for the purpose of this project)
Note
Beware, this OTB application isn’t distributed with OTB yet. It has to be installed specifically on your machine. It will be already installed in the docker images though.
- StepFactory:
It computes the Incidence Angle map, and/or cosine, sine and tangent IA maps between the ellipsoid surface normal projected in range plane \(\overrightarrow{n}\) (plane defined by S, T, and Earth’s centre) and \(\overrightarrow{TS}\) – where T is the target point on Earth’s surface, and S the SAR sensor position.