1pub mod area;
9pub mod auxiliary;
10pub mod catchment;
11pub mod geo;
12pub mod graph;
13pub mod id;
14pub mod level;
15pub mod manifest;
16pub mod raster;
17pub mod snap;
18
19pub use area::{AreaKm2, MeasureError, Weight};
22pub use auxiliary::{AuxiliaryDecl, AuxiliaryError, AuxiliarySchemaId, BlessedAuxSchema};
23pub use catchment::CatchmentUnit;
24pub use geo::{BoundingBox, GeoError, Latitude, Longitude, OutletCoord, WkbGeometry};
25pub use graph::{AdjacencyRow, DrainageGraph, GraphError};
26pub use id::{IdError, SnapId, UnitId};
27pub use level::{Level, LevelError};
28pub use manifest::{
29 Crs, FormatVersion, Manifest, ManifestBuilder, ManifestError, Topology, UnitCount,
30 UpAreaAvailability,
31};
32pub use raster::{FlowDirEncoding, FlowDirEncodingError};
33pub use snap::{SnapError, SnapTarget, StemRole};
34
35pub trait HasBbox {
39 fn bbox(&self) -> &BoundingBox;
41}
42
43impl HasBbox for CatchmentUnit {
44 fn bbox(&self) -> &BoundingBox {
45 catchment::CatchmentUnit::bbox(self)
46 }
47}
48
49pub trait HasUnitId {
53 fn unit_id(&self) -> UnitId;
55}
56
57impl HasUnitId for CatchmentUnit {
58 fn unit_id(&self) -> UnitId {
59 self.id()
60 }
61}
62
63impl HasUnitId for AdjacencyRow {
64 fn unit_id(&self) -> UnitId {
65 self.id()
66 }
67}
68
69impl HasUnitId for SnapTarget {
70 fn unit_id(&self) -> UnitId {
71 self.unit_id()
72 }
73}