osm-to-euroscope

A tool to generate Radar Screens from OSM Data
git clone git://archive.git.mtrnord.blog/MTRNord/osm-to-euroscope.git
Log | Files | Refs | README | LICENSE

macros.rs (1007B)


      1 macro_rules! format_coordinate_part {
      2     ($coordinate:expr) => {{
      3         use crate::utils::to_2_digits;
      4 
      5         let degree = $coordinate.trunc() as i64;
      6         let minute = (($coordinate - degree as f64).abs() * 60.0).trunc() as i64;
      7         let seconds = 3600.0 * ($coordinate - degree as f64).abs() - 60.0 * (minute as f64);
      8         let decimal_part_string = format!("{:.2}", seconds - (seconds.trunc() as f64) as f64);
      9         let decimal_part_split = decimal_part_string.split('.').collect::<Vec<&str>>();
     10         let decimal_part = decimal_part_split.last().unwrap();
     11 
     12         format!(
     13             "{:03}.{:02}.{:02}.{:02}",
     14             degree,
     15             minute,
     16             to_2_digits(seconds as i32),
     17             decimal_part
     18         )
     19     }};
     20 }
     21 
     22 macro_rules! format_coordinate {
     23     ($lat:expr, $lon:expr) => {{
     24         let lat_str = format_coordinate_part!($lat);
     25         let lon_str = format_coordinate_part!($lon);
     26         format!("COORD:N{}:E{}\n", lat_str, lon_str).as_bytes()
     27     }};
     28 }