navigo 0.1.0

Simply manipulate GPS/geospatial data in Rust — distances, elevation, simplification, climb detection.
Documentation
mod area;
mod climbs;
#[cfg(test)]
mod data;
mod elevation;
mod extrema;
#[cfg(test)]
mod helper;
mod location;
mod simplify;
mod trace;

pub use area::Area;
pub use climbs::ClimbStats;
pub use elevation::{Elevation, GainLoss};
pub use location::Location;
pub use trace::Trace;

pub fn build_trace(locations: &[Location]) -> Trace {
    Trace::new(locations)
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn should_build_a_trace() {
        let paris = Location {
            longitude: 2.350987,
            latitude: 48.856667,
            altitude: 0.0,
        };
        let moscow = Location {
            longitude: 37.617634,
            latitude: 55.755787,
            altitude: 0.0,
        };
        let locations = vec![paris, moscow];
        let trace = build_trace(&locations);
        assert!(!trace.locations.is_empty());
        assert!((trace.length() - 2486.340992526076).abs() < 1e-6);
    }
}