1pub mod area;
9pub mod catchment;
10pub mod geo;
11pub mod graph;
12pub mod id;
13pub mod manifest;
14pub mod raster;
15pub mod snap;
16
17pub use area::{AreaKm2, MeasureError, Weight};
20pub use catchment::CatchmentAtom;
21pub use geo::{BoundingBox, GeoError, Latitude, Longitude, WkbGeometry};
22pub use graph::{AdjacencyRow, DrainageGraph, GraphError};
23pub use id::{AtomId, IdError, SnapId};
24pub use manifest::{
25 AtomCount, Crs, FormatVersion, Manifest, ManifestBuilder, ManifestError, RasterAvailability,
26 SnapAvailability, Topology, UpAreaAvailability,
27};
28pub use raster::{FlowDirEncoding, FlowDirEncodingError};
29pub use snap::{MainstemStatus, SnapTarget};
30
31pub trait HasBbox {
36 fn bbox(&self) -> &BoundingBox;
38}
39
40impl HasBbox for CatchmentAtom {
41 fn bbox(&self) -> &BoundingBox {
42 catchment::CatchmentAtom::bbox(self)
43 }
44}
45
46impl HasBbox for SnapTarget {
47 fn bbox(&self) -> &BoundingBox {
48 snap::SnapTarget::bbox(self)
49 }
50}
51
52pub trait HasAtomId {
56 fn atom_id(&self) -> AtomId;
58}
59
60impl HasAtomId for CatchmentAtom {
61 fn atom_id(&self) -> AtomId {
62 self.id()
63 }
64}
65
66impl HasAtomId for AdjacencyRow {
67 fn atom_id(&self) -> AtomId {
68 self.id()
69 }
70}