pub mod area;
pub mod auxiliary;
pub mod catchment;
pub mod geo;
pub mod graph;
pub mod id;
pub mod level;
pub mod manifest;
pub mod raster;
pub mod snap;
pub use area::{AreaKm2, MeasureError, Weight};
pub use auxiliary::{AuxiliaryDecl, AuxiliaryError, AuxiliarySchemaId, BlessedAuxSchema};
pub use catchment::CatchmentUnit;
pub use geo::{BoundingBox, GeoError, Latitude, Longitude, OutletCoord, WkbGeometry};
pub use graph::{AdjacencyRow, DrainageGraph, GraphError};
pub use id::{IdError, SnapId, UnitId};
pub use level::{Level, LevelError};
pub use manifest::{
Crs, FormatVersion, Manifest, ManifestBuilder, ManifestError, Topology, UnitCount,
UpAreaAvailability,
};
pub use raster::{FlowDirEncoding, FlowDirEncodingError};
pub use snap::{SnapError, SnapTarget, StemRole};
pub trait HasBbox {
fn bbox(&self) -> &BoundingBox;
}
impl HasBbox for CatchmentUnit {
fn bbox(&self) -> &BoundingBox {
catchment::CatchmentUnit::bbox(self)
}
}
pub trait HasUnitId {
fn unit_id(&self) -> UnitId;
}
impl HasUnitId for CatchmentUnit {
fn unit_id(&self) -> UnitId {
self.id()
}
}
impl HasUnitId for AdjacencyRow {
fn unit_id(&self) -> UnitId {
self.id()
}
}
impl HasUnitId for SnapTarget {
fn unit_id(&self) -> UnitId {
self.unit_id()
}
}