stac

GitHub Workflow Status docs.rs Crates.io Crates.io Contributor Covenant

Rust implementation of the SpatioTemporal Asset Catalog (STAC) specification.

Usage

To use the library in your project:

toml [dependencies] stac = "0.5"

Examples

```rust use stac::Item;

// Creates an item from scratch. let item = Item::new("an-id");

// Reads an item from the filesystem. let item: Item = stac::read("data/simple-item.json").unwrap(); ```

Please see the documentation for more usage examples.

Features

There are three opt-in features.

reqwest

reqwest enables blocking remote reads:

toml [dependencies] stac = { version = "0.5", features = ["reqwest"]}

Then:

```rust let href = "https://raw.githubusercontent.com/radiantearth/stac-spec/master/examples/simple-item.json";

[cfg(feature = "reqwest")]

let item: stac::Item = stac::read(href).unwrap(); ```

If reqwest is not enabled, stac::read will throw an error if you try to read from a url.

```rust let href = "https://raw.githubusercontent.com/radiantearth/stac-spec/master/examples/simple-item.json";

[cfg(not(feature = "reqwest"))]

let err = stac::read::(href).unwrap_err(); ```

For non-blocking IO, use the stac-async crate.

geo

To use geojson and geo to add some extra geo-enabled methods:

toml [dependencies] stac = { version = "0.5", features = ["geo"] }

Then, you can set an item's geometry and bounding box at the same time:

```rust

[cfg(feature = "geo")]

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

let geometry = Geometry::new(Value::Point(vec![
    -105.1, 41.1,
]));
let mut item = Item::new("an-id");

item.set_geometry(geometry).unwrap();
assert!(item.bbox.is_some());

} ```

schemars

schemars allows for jsonschema generation from STAC objects. This is mostly useful for auto-generating OpenAPI documentation for STAC APIs.

toml [dependencies] stac = { version = "0.5", features = ["schemars"]}