pub struct Search {
pub limit: Option<u64>,
pub bbox: Option<Vec<f64>>,
pub datetime: Option<String>,
pub intersects: Option<Geometry>,
pub ids: Option<Vec<String>>,
pub collections: Option<Vec<String>>,
pub fields: Option<Fields>,
pub sortby: Option<Vec<Sortby>>,
pub filter_crs: Option<String>,
pub filter: Option<Filter>,
pub query: Option<Map<String, Value>>,
pub additional_fields: Map<String, Value>,
}Expand description
The core parameters for STAC search are defined by OAFeat, and STAC adds a few parameters for convenience.
Fields§
§limit: Option<u64>The maximum number of results to return (page size).
bbox: Option<Vec<f64>>Requested bounding box.
datetime: Option<String>Single date+time, or a range (‘/’ separator), formatted to RFC 3339, section 5.6.
Use double dots .. for open date ranges.
intersects: Option<Geometry>Searches items by performing intersection between their geometry and provided GeoJSON geometry.
All GeoJSON geometry types must be supported.
ids: Option<Vec<String>>Array of Item ids to return.
collections: Option<Vec<String>>Array of one or more Collection IDs that each matching Item must be in.
fields: Option<Fields>Include/exclude fields from item collections.
sortby: Option<Vec<Sortby>>Fields by which to sort results.
filter_crs: Option<String>Recommended to not be passed, but server must only accept http://www.opengis.net/def/crs/OGC/1.3/CRS84 as a valid value, may reject any others
filter: Option<Filter>CQL2 filter expression.
query: Option<Map<String, Value>>Additional filtering based on properties.
It is recommended to use the filter extension instead.
additional_fields: Map<String, Value>Additional fields.
Implementations§
source§impl Search
impl Search
sourcepub fn ids(self, ids: impl Into<Option<Vec<String>>>) -> Search
pub fn ids(self, ids: impl Into<Option<Vec<String>>>) -> Search
Sets the ids field of this search.
§Examples
use stac_api::Search;
let search = Search::new().ids(vec!["an-id".to_string()]);sourcepub fn validate(&self) -> Result<()>
pub fn validate(&self) -> Result<()>
Validates this search.
E.g. the search is invalid if both bbox and intersects are specified.
§Examples
use stac_api::Search;
let mut search = Search { bbox: Some(vec![-180.0, -90.0, 180.0, 80.0]), ..Default::default() };
search.validate().unwrap();
search.intersects = Some(stac::Geometry::point(0., 0.));
let _ = search.validate().unwrap_err();sourcepub fn collection_matches(&self, item: &Item) -> bool
pub fn collection_matches(&self, item: &Item) -> bool
Returns true if this item’s collection matches this search.
§Examples
use stac_api::Search;
use stac::Item;
let mut search = Search::new();
let mut item = Item::new("item-id");
assert!(search.collection_matches(&item));
search.collections = Some(vec!["collection-id".to_string()]);
assert!(!search.collection_matches(&item));
item.collection = Some("collection-id".to_string());
assert!(search.collection_matches(&item));
item.collection = Some("another-collection-id".to_string());
assert!(!search.collection_matches(&item));sourcepub fn id_matches(&self, item: &Item) -> bool
pub fn id_matches(&self, item: &Item) -> bool
Returns true if this item’s id matches this search.
§Examples
use stac_api::Search;
use stac::Item;
let mut search = Search::new();
let mut item = Item::new("item-id");
assert!(search.id_matches(&item));
search.ids = Some(vec!["item-id".to_string()]);
assert!(search.id_matches(&item));
search.ids = Some(vec!["another-id".to_string()]);
assert!(!search.id_matches(&item));sourcepub fn datetime_matches(&self, item: &Item) -> Result<bool>
pub fn datetime_matches(&self, item: &Item) -> Result<bool>
Returns true if this item’s datetime matches this search.
§Examples
use stac_api::Search;
use stac::Item;
let mut search = Search::new();
let mut item = Item::new("item-id"); // default datetime is now
assert!(search.datetime_matches(&item).unwrap());
search.datetime = Some("../2023-10-09T00:00:00Z".to_string());
assert!(!search.datetime_matches(&item).unwrap());
item.properties.datetime = Some("2023-10-08T00:00:00Z".to_string());
assert!(search.datetime_matches(&item).unwrap());sourcepub fn query_matches(&self, _: &Item) -> Result<bool>
pub fn query_matches(&self, _: &Item) -> Result<bool>
Returns true if this item’s matches this search query.
Currently unsupported, always raises an error if query is set.
§Examples
use stac_api::Search;
use stac::Item;
let mut search = Search::new();
let mut item = Item::new("item-id");
assert!(search.query_matches(&item).unwrap());
search.query = Some(Default::default());
assert!(search.query_matches(&item).is_err());sourcepub fn filter_matches(&self, _: &Item) -> Result<bool>
pub fn filter_matches(&self, _: &Item) -> Result<bool>
Returns true if this item matches this search’s filter.
Currently unsupported, always raises an error if filter is set.
§Examples
use stac_api::Search;
use stac::Item;
let mut search = Search::new();
let mut item = Item::new("item-id");
assert!(search.filter_matches(&item).unwrap());
search.filter = Some(Default::default());
assert!(search.filter_matches(&item).is_err());