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:

  1. 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.

  2. Then, it makes sure the requested associated IA maps exist, it:

    1. produces an image of ECEF coordinates for the ellipsoid surface points and their associated satellite positions in the S2 geometry,

    2. computes the normal of each ellipsoid surface point,

    3. computes the requested IA maps of each point.

Incidence Angle specific processings

Complete task flow for generating Ellipsoid Incidence Angle map on 31TCH, orbit 110

Tasks for generating Ellipsoid Incidence Angle map on 31TCH, orbit 110

Compute ECEF Ellipsoid surface and satellite positions on S2

Inputs:

A matching EOF file

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:

s1tiling.libs.otbwrappers.ComputeEllipsoidNormalsOnS2

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):

(1)\[\frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1\]

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:

(2)\[\begin{split}n(P) = \left( \begin{matrix} \frac{X}{a^2} \\ \frac{Y}{b^2} \\ \frac{Z}{c^2} \end{matrix} \right)\end{split}\]

The WGS84 datum surface is an oblate spheroidwikipedia

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:

(3)\[\begin{split}\begin{eqnarray} X & = & \left(N(\phi) + h\right) \cos{\phi} \cos{\lambda} \\ Y & = & \left(N(\phi) + h\right) \cos{\phi} \sin{\lambda} \\ Z & = & \left( (1 - f)^2 N(\phi) + h\right)\sin{\phi} \end{eqnarray}\end{split}\]

Injecting (3) into (2) for \(h=0\), we obtain:

\[\begin{split}n(P) = \left( \begin{matrix} \frac{X}{a^2} \\ \frac{Y}{a^2} \\ \frac{Z}{a^2 (1-f)^2} \end{matrix} \right)\end{split}\]
\[\begin{split}n(P) = \frac{1}{a^2} \left( \begin{matrix} N(\phi) \cos{\phi} \cos{\lambda} \\ N(\phi) \cos{\phi} \sin{\lambda} \\ \left( \frac{(1 - f)^2}{(1 - f)^2} N(\phi) \right)\sin{\phi} \end{matrix} \right)\end{split}\]
\[\begin{split}n(P) = \frac{N(\phi)}{a^2} \left( \begin{matrix} \cos{\phi} \cos{\lambda} \\ \cos{\phi} \sin{\lambda} \\ \sin{\phi} \end{matrix} \right)\end{split}\]

As \((\cos{\phi} \cos{\lambda})^2 + (\cos{\phi} \sin{\lambda})^2 + (\sin{\phi})^2 = 1)\), the normal vector is:

(4)\[\begin{split}N(\phi,\lambda) = \left( \begin{matrix} \cos{\phi} \cos{\lambda} \\ \cos{\phi} \sin{\lambda} \\ \sin{\phi} \end{matrix} \right)\end{split}\]

Which matches Converting latitude/longitude to n-vector (wikipedia)

Ellipsoid IA maps computation

Input:
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:

s1tiling.libs.otbwrappers.ComputeIAOnS2

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.