Correct a variable based on the sensor zenith angleΒΆ

This variable transform was written to correct a variable for the sensor viewing angle, principally for emissivity data read from a static atlas.

Transform: SatZenithAngleCorrection

- filter: Variable Transforms
  Transform: SatZenithAngleCorrection
  transform variable:
    name: MetaData/emissivity

Parameters

The default option for this transform requires the following variable to be available:

  • sensor zenith angle (MetaData/sensorZenithAngle)

The following options are available for this variable transform:

  • transform variable is a required parameter and is of type ufo::Variable. This type requires a name and usually a list of channels.

  • coefficient a is a parameter and a vector of floats with a default value of {1.0}. This variable is \(a_1\) in the equation in the method section. It must be the same size as the total number of variables in transform variable.

  • coefficient b is a parameter and a vector of floats with a default value of {1.0}. This variable is \(a_2\) in the equation in the method section. It must be the same size as the total number of variables in transform variable.

  • coefficient c is a parameter and a vector of floats with a default value of {1.0}. This variable is \(a_3\) in the equation in the method section. It must be the same size as the total number of variables in transform variable.

  • exponent a is a parameter and an integer with a default value of 1. This variable is \(b_1\) in the equation in the method section. This exponent is applied to all variables in transform variable. In the example below the same exponent a is used for emissivity_1 and emissivity_2.

  • exponent b is a parameter and an integer with a default value of 1. This variable is \(b_2\) in the equation in the method section. This exponent is applied to all variables in transform variable. In the example below the same exponent b is used for emissivity_1 and emissivity_2.

  • exponent c is a parameter and an integer with a default value of 1. This variable is \(b_3\) in the equation in the method section. This exponent is applied to all variables in transform variable. In the example below the same exponent c is used for emissivity_1 and emissivity_2.

  • minimum value is an optional parameter which defines the minimum acceptable value of the output \(var\) in the equation in the method section. If an output value exceeds this limit the missing value indicator is the assigned value.

  • maximum value is an optional parameter which defines the maximum acceptable value of the output \(var\) in the equation in the method section. If an output value exceeds this limit the missing value indicator is the assigned value.

Example using all the available parameters

- filter: Variable Transforms
  Transform: SatZenithAngleCorrection
  transform variable:
    name: DerivedObsValue/emissivity
    channels: 1,2
  coefficient a: [-3.60e-03, -2.38e-03]
  coefficient b: [ 2.21e-05,  2.15e-05]
  coefficient c: [-7.83e-09, -5.00e-09]
  exponent a: 0
  exponent b: 2
  exponent c: 4
  minimum value: 0.0
  maximum value: 1.0

If you have an observation with an input emissivity of 0.5 and a sensor zenith angle of 30.0, the above yaml would do the following calculation for channel 2:

\[var = 0.5 + (-2.38\times10^3\times30.0^0) + (2.15\times10^5\times30.0^2) + (-5.00\times10^9\times30.0^4)\]
\[var = 0.51292\]

Method

The input variable is updated using the following formula:

\[var = var + a_1\theta ^{b_1} + a_2\theta ^{b_2} + a_3\theta ^{b_3}\]
where:
  • \(var\) is the input and output variable of interest.

  • \(a_n\) is the \(n^{th}\) coefficient used to multiple the zenith angle.

  • \(b_n\) is the \(n^{th}\) exponent of the zenith angle.

  • \(\theta\) is the sensor viewing angle in degrees.