Skip to main content

Template3_1

Struct Template3_1 

Source
pub struct Template3_1 {
    pub earth: EarthShape,
    pub rotated: LatLonGrid,
    pub rotation: Rotation,
}
Expand description

Grid definition template 3.1 - rotated latitude/longitude (or equidistant cylindrical, or Plate Carrée).

§Examples

use std::io::Read;

use grib::def::grib2::template::{Template3_1, param_set};
use grib_template_helpers::TryFromSlice;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut buf = Vec::new();

    let f = std::fs::File::open(
        "testdata/20260219T00Z_MSC_HRDPS_CAPE_Sfc_RLatLon0.0225_PT000H.grib2",
    )?;
    let mut f = std::io::BufReader::new(f);
    f.read_to_end(&mut buf)?;

    let mut pos = 0x33;
    let actual = Template3_1::try_from_slice(&buf, &mut pos)?;
    let expected = Template3_1 {
        earth: param_set::EarthShape {
            shape: 6,
            spherical_earth_radius_scale_factor: 0xff,
            spherical_earth_radius_scaled_value: 0xffffffff,
            major_axis_scale_factor: 0xff,
            major_axis_scaled_value: 0xffffffff,
            minor_axis_scale_factor: 0xff,
            minor_axis_scaled_value: 0xffffffff,
        },
        rotated: param_set::LatLonGrid {
            grid: param_set::Grid {
                ni: 2540,
                nj: 1290,
                initial_production_domain_basic_angle: 0,
                basic_angle_subdivisions: 0xffffffff,
                first_point_lat: -12302501,
                first_point_lon: 345178780,
                resolution_and_component_flags: param_set::ResolutionAndComponentFlags(
                    0b00111000,
                ),
                last_point_lat: 16700001,
                last_point_lon: 42306283,
            },
            scanning_mode: param_set::ScanningMode(0b01000000),
            i_direction_inc: 22500,
            j_direction_inc: 22500,
        },
        rotation: param_set::Rotation {
            south_pole_lat: -36088520,
            south_pole_lon: 245305142,
            rot_angle: 0.,
        },
    };
    assert_eq!(actual, expected);

    Ok(())
}

Fields§

§earth: EarthShape§rotated: LatLonGrid§rotation: Rotation

Trait Implementations§

Source§

impl Debug for Template3_1

Source§

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

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

impl Dump for Template3_1

Source§

fn dump<W: Write>( &self, parent: Option<&Cow<'_, str>>, pos: &mut usize, output: &mut W, ) -> Result<(), Error>

Perform dumping to output. Read more
Source§

impl GridPointIndex for Template3_1

Source§

fn grid_shape(&self) -> (usize, usize)

Returns the shape of the grid, i.e. a tuple of the number of grids in the i and j directions.
Source§

fn scanning_mode(&self) -> &ScanningMode

Returns ScanningMode used for the iteration.
Source§

fn ij(&self) -> Result<GridPointIndexIterator, GribError>

Returns an iterator over 2D index (i, j) of grid points.
Source§

impl GridShortName for Template3_1

Source§

fn short_name(&self) -> &'static str

Returns the grid type. Read more
Source§

impl LatLons for Template3_1

Source§

type Iter<'a> = Unrotate<RegularGridIterator> where Self: 'a

Source§

fn latlons<'a>(&'a self) -> Result<Self::Iter<'a>, GribError>

Computes and returns an iterator over latitudes and longitudes of grid points in degrees. Read more
Source§

impl PartialEq for Template3_1

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 TryFromSlice for Template3_1

Source§

fn try_from_slice(slice: &[u8], pos: &mut usize) -> TryFromSliceResult<Self>

Performs reading. The pos argument is a variable storing the starting position for reading within the slice. Read more
Source§

impl StructuralPartialEq for Template3_1

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
§

impl<T> DumpField for T
where T: Dump,

§

fn dump_field<W>( &self, name: &str, parent: Option<&Cow<'_, str>>, _doc: &str, pos: &mut usize, output: &mut W, ) -> Result<(), Error>
where W: Write,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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