diff --git a/src/main.rs b/src/main.rs index 02f70c1..e36abb3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,17 +1,55 @@ use osmpbf::*; +use std::fs::File; +use std::io::{BufWriter, Write}; fn main() { let reader = ElementReader::from_path( "/mnt/c/Users/dongho/Desktop/ekstrahMap/assets/south-korea-latest.osm.pbf", ); + let file = File::create("./src/points.rs").expect("Failed to create File 'points.rs'"); + let mut writer = BufWriter::new(file); + // Insert Macro_rules for gettign dynamic size of array + // + let mac_rules_and_init_file: &str = r#"macro_rules! array_size { + ($array:expr) => {{ + let mu size = 0; + for _ in $array { + size += 1; + } + size + }} +} + + struct point { + lat: f64, + lon: f64, + } + + pub const POINTS: [point; array_size!(POINTS)] = [ +"#; + + let endian_file: &str = r#"];"#; + let _ = writer.write_all(mac_rules_and_init_file.as_bytes()); let mut nodes = 0_u64; + let mut max_lat: f64 = 0.0; + let mut min_lat: f64 = 40.0; + let mut min_lon: f64 = 130.0; + let mut max_lon: f64 = 120.0; let _ = reader.expect("REASON").for_each(|element| { if let Element::DenseNode(node) = element { let lat: f64 = node.lat(); let lon: f64 = node.lon(); - let id: i64 = node.id(); - println!("Node: {id}, Latitude: {lat}, Longitude: {lon}"); + let lat_lon_str: String = format!("points {{ lat: {}, lon: {} }}, \n", lat, lon); + let _ = writer.write_all(lat_lon_str.as_bytes()); + max_lon = if lon > max_lon { lon } else { max_lon }; + max_lat = if lat > max_lat { lat } else { max_lat }; + min_lon = if lon < min_lon { lon } else { min_lon }; + min_lat = if lat < min_lat { lat } else { min_lat }; + nodes += 1; + // println!("Latitude: {lat}, Longitude: {lon}"); } }); - println!("Number of ways: {nodes}"); + let _ = writer.write_all(endian_file.as_bytes()); + println!("Number of Nodes: {nodes}"); + println!("Max Lat: {max_lat}, Min Lat: {min_lat}, Max Lon: {max_lon}, Min Lon: {min_lon}"); }