Struct Item

Source
pub struct Item {
    pub version: Version,
    pub extensions: Vec<String>,
    pub id: String,
    pub geometry: Option<Geometry>,
    pub bbox: Option<Bbox>,
    pub properties: Properties,
    pub links: Vec<Link>,
    pub assets: IndexMap<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§

§version: Version

The STAC version the Item implements.

§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<Bbox>

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: IndexMap<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("examples/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].try_into().unwrap());
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".parse().unwrap());
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".parse().unwrap());
let (start, end) = stac::datetime::parse("2023-07-11T00:00:00Z/2023-07-12T00:00:00Z").unwrap();
assert!(item.intersects_datetimes(start, end).unwrap());
Source

pub fn into_flat_item(self, drop_invalid_attributes: bool) -> Result<FlatItem>

Converts this item into a FlatItem.

If drop_invalid_attributes is True, any properties that conflict with top-level field names will be discarded with a warning. If it is False, and error will be raised. The same is true for any top-level fields that are not part of the spec.

§Examples
use stac::Item;

let mut item = Item::new("an-id");
let flat_item = item.into_flat_item(true).unwrap();

Trait Implementations§

Source§

impl Assets for Item

Source§

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

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

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

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

fn make_assets_absolute(&mut self, base: &str) -> Result<()>

Makes all asset hrefs absolute.
Source§

impl Clone for Item

Source§

fn clone(&self) -> Item

Returns a duplicate 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 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 From<Item> for Value

Source§

fn from(o: Item) -> Value

Converts to this type from the input type.
Source§

impl FromGeoparquet for Item

Available on crate feature geoparquet only.
Source§

fn from_geoparquet_bytes(_: impl Into<Bytes>) -> Result<Self, Error>

Creates a STAC object from geoparquet bytes.
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 FromNdjson for Item

Source§

fn from_ndjson_bytes(bytes: impl Into<Bytes>) -> Result<Self>

Creates a STAC object from ndjson bytes. Read more
Source§

impl IntoGeoparquet for Item

Available on crate feature geoparquet only.
Source§

fn into_geoparquet_writer( self, writer: impl Write + Send, compression: Option<Compression>, ) -> Result<()>

Writes a value to a writer as stac-geoparquet. Read more
Source§

fn into_geoparquet_vec( self, compression: Option<Compression>, ) -> Result<Vec<u8>>

Writes a value to a writer as stac-geoparquet to some bytes. Read more
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 this object’s self href.
Makes all links relative with respect to this object’s self href.
Removes all relative links. Read more
Removes all structural links. Read more
Source§

impl Migrate for Item

Source§

fn migrate(self, to: &Version) -> Result<Self>

Migrates this object to another version. Read more
Source§

impl PartialEq for Item

Source§

fn eq(&self, other: &Item) -> 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 SelfHref for Item

Source§

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

Gets this object’s href. Read more
Source§

fn self_href_mut(&mut self) -> &mut Option<String>

Returns a mutable reference to this object’s self href. Read more
Source§

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

Sets this object’s self href.
Source§

fn clear_self_href(&mut self)

Clear’s this object’s self href.
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 ToNdjson for Item

Source§

fn to_ndjson_writer(&self, writer: impl Write) -> Result<()>

Writes a value to a writer as newline-delimited JSON. Read more
Source§

fn to_ndjson_vec(&self) -> Result<Vec<u8>>

Writes a value as newline-delimited JSON bytes. Read more
Source§

impl TryFrom<Feature> for Item

Source§

type Error = Error

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

fn try_from(feature: Feature) -> Result<Item>

Performs the conversion.
Source§

impl TryFrom<Item> for Feature

Source§

type Error = Error

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

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

Performs the conversion.
Source§

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

Source§

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

Source§

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

Source§

type Error = Error

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

fn try_from(value: Value) -> Result<Item>

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

Source§

fn from_json_slice(slice: &[u8]) -> Result<Self>

Creates an object from JSON bytes. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToJson for T
where T: Serialize,

Source§

fn to_json_writer(&self, writer: impl Write, pretty: bool) -> Result<()>

Writes a value as JSON. Read more
Source§

fn to_json_vec(&self, pretty: bool) -> Result<Vec<u8>>

Writes a value as JSON bytes. 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<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

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

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

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

Source§

impl<T> ErasedDestructor for T
where T: 'static,