diff --git a/Cargo.lock b/Cargo.lock index b5164d3..3a8aed6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -208,7 +208,7 @@ dependencies = [ [[package]] name = "fit2gpx" -version = "0.5.4" +version = "0.5.5" dependencies = [ "clap", "env_logger", @@ -418,9 +418,9 @@ dependencies = [ [[package]] name = "srtm_reader" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae82b5e949a85ec77c28ff244fd1277682cd6ecbd4749bec8ee5197365ab75ec" +checksum = "73b7e8508865adf213782be9d2fc7a0b15183e18c68dddb46e6e4cba3a5cb5ff" [[package]] name = "strsim" diff --git a/Cargo.toml b/Cargo.toml index 4351367..40ff56f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fit2gpx" -version = "0.5.4" +version = "0.5.5" edition = "2021" authors = ["Jeromos Kovács "] @@ -20,7 +20,7 @@ geo-types = "0.7.15" gpx = "0.10.0" log = "0.4.25" rayon = "1.10.0" -srtm_reader = { version = "0.4.2", optional = true } +srtm_reader = { version = "0.5.0", optional = true } time = { version = "0.3.37", default-features = false } [features] diff --git a/src/elevation.rs b/src/elevation.rs index e9d1a64..f63fde6 100644 --- a/src/elevation.rs +++ b/src/elevation.rs @@ -6,12 +6,15 @@ pub use std::{ path::Path, }; +/// truncated coordinate +pub type Coord = (i8, i16); + // TODO: docs -pub fn needed_tile_coords(wps: &[Waypoint]) -> BTreeSet<(i32, i32)> { - // kinda Waypoint to (i32, i32) - let trunc = |wp: &Waypoint| -> (i32, i32) { +pub fn needed_tile_coords(wps: &[Waypoint]) -> BTreeSet { + // kinda Waypoint to Coord + let trunc = |wp: &Waypoint| -> Coord { let (x, y) = wp.point().x_y(); - (y.trunc() as i32, x.trunc() as i32) + (y.trunc() as i8, x.trunc() as i16) }; // tiles we need wps.par_iter() @@ -22,7 +25,7 @@ pub fn needed_tile_coords(wps: &[Waypoint]) -> BTreeSet<(i32, i32)> { // TODO: docs pub fn read_needed_tiles( - needs: &BTreeSet<(i32, i32)>, + needs: &BTreeSet, elev_data_dir: impl AsRef, ) -> Vec { log::info!("reading needed tiles into memory"); @@ -31,7 +34,7 @@ pub fn read_needed_tiles( let elev_data_dir = elev_data_dir.as_ref(); needs .par_iter() - .map(|c| srtm_reader::get_filename(*c)) + .map(|c| srtm_reader::Coord::from(*c).get_filename()) .map(|t| elev_data_dir.join(t)) .flat_map(|p| { srtm_reader::Tile::from_file(&p)