pub mod area;
pub mod catchment;
pub mod geo;
pub mod graph;
pub mod id;
pub mod manifest;
pub mod raster;
pub mod snap;
pub use area::{AreaKm2, MeasureError, Weight};
pub use catchment::CatchmentAtom;
pub use geo::{BoundingBox, GeoError, Latitude, Longitude, WkbGeometry};
pub use graph::{AdjacencyRow, DrainageGraph, GraphError};
pub use id::{AtomId, IdError, SnapId};
pub use manifest::{
AtomCount, Crs, FormatVersion, Manifest, ManifestBuilder, ManifestError, RasterAvailability,
SnapAvailability, Topology, UpAreaAvailability,
};
pub use raster::{FlowDirEncoding, FlowDirEncodingError};
pub use snap::{MainstemStatus, SnapTarget};
pub trait HasBbox {
fn bbox(&self) -> &BoundingBox;
}
impl HasBbox for CatchmentAtom {
fn bbox(&self) -> &BoundingBox {
catchment::CatchmentAtom::bbox(self)
}
}
impl HasBbox for SnapTarget {
fn bbox(&self) -> &BoundingBox {
snap::SnapTarget::bbox(self)
}
}
pub trait HasAtomId {
fn atom_id(&self) -> AtomId;
}
impl HasAtomId for CatchmentAtom {
fn atom_id(&self) -> AtomId {
self.id()
}
}
impl HasAtomId for AdjacencyRow {
fn atom_id(&self) -> AtomId {
self.id()
}
}