19 releases
0.6.0 | Apr 11, 2024 |
---|---|
0.5.2 | Oct 18, 2023 |
0.5.0 | Jun 27, 2023 |
0.3.2 | Feb 19, 2023 |
0.0.4 | Mar 9, 2022 |
#43 in Science
538 downloads per month
Used in 5 crates
1.5MB
2.5K
SLoC
stac
Rust implementation of the SpatioTemporal Asset Catalog (STAC) specification.
Usage
To use the library in your project:
[dependencies]
stac = "0.6"
Examples
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 four opt-in features.
reqwest
reqwest
enables blocking remote reads:
[dependencies]
stac = { version = "0.6", features = ["reqwest"]}
Then:
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.
let href = "https://raw.githubusercontent.com/radiantearth/stac-spec/master/examples/simple-item.json";
#[cfg(not(feature = "reqwest"))]
let err = stac::read::<stac::Item>(href).unwrap_err();
For non-blocking IO, use the stac-async crate.
gdal
To use GDAL to create items with projection and raster band information, you'll need GDAL installed on your system:
[dependencies]
stac = { version = "0.6", features = ["gdal"] }
Then, items created from rasters will include the projection and raster extensions:
#[cfg(feature = "gdal")]
{
use stac::{extensions::{Raster, Projection}, Extensions, item::Builder};
let item = Builder::new("an-id").asset("data", "assets/dataset_geo.tif").into_item().unwrap();
assert!(item.has_extension::<Projection>());
assert!(item.has_extension::<Raster>());
}
geo
To use geojson and geo to add some extra geo-enabled methods:
[dependencies]
stac = { version = "0.6", features = ["geo"] }
Then, you can set an item's geometry and bounding box at the same time:
#[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.
[dependencies]
stac = { version = "0.6", features = ["schemars"]}
Dependencies
~4–19MB
~273K SLoC