Struct stac::item::Item

source ·
pub struct Item {
    pub extensions: Vec<String>,
    pub id: String,
    pub geometry: Option<Geometry>,
    pub bbox: Option<Vec<f64>>,
    pub properties: Properties,
    pub links: Vec<Link>,
    pub assets: HashMap<String, Asset>,
    pub collection: Option<String>,
    pub additional_fields: Map<String, Value>,
    /* private fields */
}
Expand description

An Item is a GeoJSON Feature augmented with foreign members relevant to a STAC object.

These include fields that identify the time range and assets of the Item. An Item is the core object in a STAC catalog, containing the core metadata that enables any client to search or crawl online catalogs of spatial ‘assets’ (e.g., satellite imagery, derived data, DEMs).

Fields§

§extensions: Vec<String>

A list of extensions the Item implements.

§id: String

Provider identifier.

The ID should be unique within the Collection that contains the Item.

§geometry: Option<Geometry>

Defines the full footprint of the asset represented by this item, formatted according to RFC 7946, section 3.1.

The footprint should be the default GeoJSON geometry, though additional geometries can be included. Coordinates are specified in Longitude/Latitude or Longitude/Latitude/Elevation based on WGS 84.

§bbox: Option<Vec<f64>>

Bounding Box of the asset represented by this Item, formatted according to RFC 7946, section 5.

REQUIRED if geometry is not null.

§properties: Properties

A dictionary of additional metadata for the Item.

§links: Vec<Link>

List of link objects to resources and related URLs.

§assets: HashMap<String, Asset>

Dictionary of asset objects that can be downloaded, each with a unique key.

§collection: Option<String>

The id of the STAC Collection this Item references to.

This field is required if such a relation type is present and is not allowed otherwise. This field provides an easy way for a user to search for any Items that belong in a specified Collection. Must be a non-empty string.

§additional_fields: Map<String, Value>

Additional fields not part of the Item specification.

Implementations§

source§

impl Item

source

pub fn new(id: impl ToString) -> Item

Creates a new Item with the given id.

The item properties’ datetime field is set to the object creation time.

§Examples
use stac::Item;
let item = Item::new("an-id");
assert_eq!(item.id, "an-id");
source

pub fn collection(self, id: impl ToString) -> Item

Sets this item’s collection id in the builder pattern.

§Examples
use stac::Item;
let item = Item::new("an-id").collection("a-collection");
assert_eq!(item.collection.unwrap(), "a-collection");

Returns this item’s collection link.

This is the first link with a rel=“collection”.

§Examples
use stac::Item;
let item: Item = stac::read("data/simple-item.json").unwrap();
let link = item.collection_link().unwrap();
source

pub fn set_geometry( &mut self, geometry: impl Into<Option<Geometry>> ) -> Result<()>

Available on crate feature geo only.

Sets this item’s geometry.

Also sets this item’s bounding box.

§Examples
use stac::Item;
use geojson::{Geometry, Value};

let mut item = Item::new("an-id");
item.set_geometry(Some(Geometry::new(Value::Point(vec![-105.1, 41.1]))));
assert_eq!(item.bbox.unwrap(), vec![-105.1, 41.1, -105.1, 41.1]);
source

pub fn intersects<T>(&self, intersects: &T) -> Result<bool>
where T: Intersects<Geometry>,

Available on crate feature geo only.

Returns true if this item’s geometry intersects the provided geojson geometry.

§Examples
use stac::Item;
use geojson::{Geometry, Value};
use geo::{Rect, coord};

let mut item = Item::new("an-id");
item.set_geometry(Some(Geometry::new(Value::Point(vec![-105.1, 41.1]))));
let intersects = Rect::new(
    coord! { x: -106.0, y: 40.0 },
    coord! { x: -105.0, y: 42.0 },
);
assert!(item.intersects(&intersects).unwrap());
source

pub fn intersects_bbox(&self, bbox: Rect) -> Result<bool>

👎Deprecated since 0.5.2: Use intersects instead
Available on crate feature geo only.

Returns true if this item’s geometry intersects the provided bounding box.

DEPRECATED Use intersects instead.

§Examples
use stac::Item;
use geojson::{Geometry, Value};

let mut item = Item::new("an-id");
item.set_geometry(Some(Geometry::new(Value::Point(vec![-105.1, 41.1]))));
let bbox = stac::geo::bbox(&vec![-106.0, 41.0, -105.0, 42.0]).unwrap();
assert!(item.intersects_bbox(bbox).unwrap());
source

pub fn intersects_datetime_str(&self, datetime: &str) -> Result<bool>

Returns true if this item’s datetime (or start and end datetime) intersects the provided datetime string.

§Examples
use stac::Item;
let mut item = Item::new("an-id");
item.properties.datetime = Some("2023-07-11T12:00:00Z".to_string());
assert!(item.intersects_datetime_str("2023-07-11T00:00:00Z/2023-07-12T00:00:00Z").unwrap());
source

pub fn intersects_datetimes( &self, start: Option<DateTime<FixedOffset>>, end: Option<DateTime<FixedOffset>> ) -> Result<bool>

Returns true if this item’s datetime (or start and end datetimes) intersects the provided datetime.

§Examples
use stac::Item;
let mut item = Item::new("an-id");
item.properties.datetime = Some("2023-07-11T12:00:00Z".to_string());
let (start, end) = stac::datetime::parse("2023-07-11T00:00:00Z/2023-07-12T00:00:00Z").unwrap();
assert!(item.intersects_datetimes(start, end).unwrap());

Trait Implementations§

source§

impl Assets for Item

source§

fn assets(&self) -> &HashMap<String, Asset>

Returns a reference to this object’s assets. Read more
source§

fn assets_mut(&mut self) -> &mut HashMap<String, Asset>

Returns a mut reference to this object’s assets. Read more
source§

impl Clone for Item

source§

fn clone(&self) -> Item

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for Item

source§

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

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

impl<'de> Deserialize<'de> for Item

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 Extensions for Item

source§

fn extensions(&self) -> &Vec<String>

Returns a reference to this object’s extensions. Read more
source§

fn extensions_mut(&mut self) -> &mut Vec<String>

Returns a mutable reference to this object’s extensions. Read more
source§

fn has_extension<E: Extension>(&self) -> bool

Returns true if this object has the given extension. Read more
source§

fn extension<E: Extension>(&self) -> Result<Option<E>>

Gets an extension’s data. Read more
source§

fn add_extension<E: Extension>(&mut self)

Adds an extension’s identifer to this object. Read more
source§

fn set_extension<E: Extension>(&mut self, extension: E) -> Result<()>

Sets an extension’s data and adds its schema to this object’s extensions. Read more
source§

fn remove_extension<E: Extension>(&mut self)

Removes this extension and all of its fields from this object. Read more
source§

impl Fields for Item

source§

fn fields(&self) -> &Map<String, Value>

Gets the fields value. Read more
source§

fn fields_mut(&mut self) -> &mut Map<String, Value>

Gets a mutable reference to the fields value. Read more
source§

fn field(&self, key: &str) -> Option<&Value>

Gets the value of a field. Read more
source§

fn set_field<S: Serialize>( &mut self, key: impl ToString, value: S ) -> Result<Option<Value>>

Sets the value of a field. Read more
source§

fn fields_with_prefix<D: DeserializeOwned>(&self, prefix: &str) -> Result<D>

Gets values with a prefix. Read more
source§

fn set_fields_with_prefix<S: Serialize>( &mut self, prefix: &str, value: S ) -> Result<()>

Sets values with a prefix. Read more
source§

fn remove_fields_with_prefix(&mut self, prefix: &str)

Removes values with a prefix. Read more
source§

impl FromIterator<Item> for ItemCollection

source§

fn from_iter<I: IntoIterator<Item = Item>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl Href for Item

source§

fn href(&self) -> Option<&str>

Gets this object’s href.
source§

fn set_href(&mut self, href: impl ToString)

Sets this object’s href.
Returns a reference to this object’s links. Read more
Returns a mutable reference to this object’s links. Read more
Returns the first link with the given rel type. Read more
Sets a link of the given rel type. Read more
Returns this object’s root link. Read more
Returns this object’s self link. Read more
Returns this object’s parent link. Read more
Returns an iterator over this object’s child links. Read more
Returns an iterator over this object’s item links. Read more
Makes all relative links absolute with respect to an href. Read more
Makes all absolute links relative with respect to an href. Read more
Removes all relative links. Read more
Removes all structural links. Read more
source§

impl PartialEq for Item

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Item

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 TryFrom<Item> for Map<String, Value>

§

type Error = Error

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

fn try_from(item: Item) -> Result<Self>

Performs the conversion.
source§

impl TryFrom<Map<String, Value>> for Item

§

type Error = Error

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

fn try_from(map: Map<String, Value>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl StructuralPartialEq for Item

Auto Trait Implementations§

§

impl Freeze for Item

§

impl RefUnwindSafe for Item

§

impl Send for Item

§

impl Sync for Item

§

impl Unpin for Item

§

impl UnwindSafe for Item

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> 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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

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

§

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

§

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

§

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<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

source§

fn is_within(&self, b: &G2) -> bool

source§

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