Skip to main content

Expression

Struct Expression 

Source
pub struct Expression {
    pub params: Box<ExpressionParameters>,
    pub sources: Box<SingleRasterSource>,
    pub type: Type,
}
Expand description

Expression : The Expression operator performs a pixel-wise mathematical expression on one or more bands of a raster source. The expression is specified as a user-defined script in a very simple language. The output is a raster time series with the result of the expression and with time intervals that are the same as for the inputs. Users can specify an output data type. Internally, the expression is evaluated using floating-point numbers. An example usage scenario is to calculate NDVI for a red and a near-infrared raster channel. The expression uses a raster source with two bands, referred to as A and B, and calculates the formula (A - B) / (A + B). When the temporal resolution is months, our output NDVI will also be a monthly time series. ## Types The following describes the types used in the parameters. ### Expression Expressions are simple scripts to perform pixel-wise computations. One can refer to the raster inputs as A for the first raster band, B for the second, and so on. Furthermore, expressions can check with A IS NODATA, B IS NODATA, etc. for NO DATA values. This is important if mapNoData is set to true. Otherwise, NO DATA values are mapped automatically to the output NO DATA value. Finally, the value NODATA can be used to output NO DATA. Users can think of this implicit function signature for, e.g., two inputs: rust,ignore fn (A: f64, B: f64) -> f64 As a start, expressions contain algebraic operations and mathematical functions. rust,ignore (A + B) / 2 In addition, branches can be used to check for conditions. rust,ignore if A IS NODATA { B } else { A } Function calls can be used to access utility functions. rust,ignore max(A, 0) Currently, the following functions are available: - abs(a): absolute value - min(a, b), min(a, b, c): minimum value - max(a, b), max(a, b, c): maximum value - sqrt(a): square root - ln(a): natural logarithm - log10(a): base 10 logarithm - cos(a), sin(a), tan(a), acos(a), asin(a), atan(a): trigonometric functions - pi(), e(): mathematical constants - round(a), ceil(a), floor(a): rounding functions - mod(a, b): division remainder - to_degrees(a), to_radians(a): conversion to degrees or radians To generate more complex expressions, it is possible to have variable assignments. rust,ignore let mean = (A + B) / 2; let coefficient = 0.357; mean * coefficient Note, that all assignments are separated by semicolons. However, the last expression must be without a semicolon.

Fields§

§params: Box<ExpressionParameters>§sources: Box<SingleRasterSource>§type: Type

Implementations§

Source§

impl Expression

Source

pub fn new( params: ExpressionParameters, sources: SingleRasterSource, type: Type, ) -> Expression

The Expression operator performs a pixel-wise mathematical expression on one or more bands of a raster source. The expression is specified as a user-defined script in a very simple language. The output is a raster time series with the result of the expression and with time intervals that are the same as for the inputs. Users can specify an output data type. Internally, the expression is evaluated using floating-point numbers. An example usage scenario is to calculate NDVI for a red and a near-infrared raster channel. The expression uses a raster source with two bands, referred to as A and B, and calculates the formula (A - B) / (A + B). When the temporal resolution is months, our output NDVI will also be a monthly time series. ## Types The following describes the types used in the parameters. ### Expression Expressions are simple scripts to perform pixel-wise computations. One can refer to the raster inputs as A for the first raster band, B for the second, and so on. Furthermore, expressions can check with A IS NODATA, B IS NODATA, etc. for NO DATA values. This is important if mapNoData is set to true. Otherwise, NO DATA values are mapped automatically to the output NO DATA value. Finally, the value NODATA can be used to output NO DATA. Users can think of this implicit function signature for, e.g., two inputs: rust,ignore fn (A: f64, B: f64) -> f64 As a start, expressions contain algebraic operations and mathematical functions. rust,ignore (A + B) / 2 In addition, branches can be used to check for conditions. rust,ignore if A IS NODATA { B } else { A } Function calls can be used to access utility functions. rust,ignore max(A, 0) Currently, the following functions are available: - abs(a): absolute value - min(a, b), min(a, b, c): minimum value - max(a, b), max(a, b, c): maximum value - sqrt(a): square root - ln(a): natural logarithm - log10(a): base 10 logarithm - cos(a), sin(a), tan(a), acos(a), asin(a), atan(a): trigonometric functions - pi(), e(): mathematical constants - round(a), ceil(a), floor(a): rounding functions - mod(a, b): division remainder - to_degrees(a), to_radians(a): conversion to degrees or radians To generate more complex expressions, it is possible to have variable assignments. rust,ignore let mean = (A + B) / 2; let coefficient = 0.357; mean * coefficient Note, that all assignments are separated by semicolons. However, the last expression must be without a semicolon.

Trait Implementations§

Source§

impl Clone for Expression

Source§

fn clone(&self) -> Expression

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Expression

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Expression

Source§

fn default() -> Expression

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Expression

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Expression

Source§

fn eq(&self, other: &Expression) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Expression

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Expression

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,