#include #include #include #include "ElevationReader.h" void print_usage() { std::cerr << "Usage: elevation_cli " << std::endl; std::cerr << "Example: elevation_cli ../geoelevation_dem_cache/hgt_tiles 45.07 7.68" << std::endl; } int main(int argc, char* argv[]) { if (argc != 4) { print_usage(); return 1; } std::string hgt_dir; double lat, lon; try { hgt_dir = argv[1]; lat = std::stod(argv[2]); lon = std::stod(argv[3]); } catch (const std::invalid_argument& e) { std::cerr << "Error: Invalid latitude or longitude format." << std::endl; print_usage(); return 1; } catch (const std::out_of_range& e) { std::cerr << "Error: Latitude or longitude value is out of range." << std::endl; print_usage(); return 1; } try { ElevationReader reader(hgt_dir); double elevation = reader.get_elevation(lat, lon); std::cout << "Querying for Latitude=" << lat << ", Longitude=" << lon << std::endl; if (elevation == USER_NO_DATA_VALUE) { std::cout << "Result: Elevation data not available for this location." << std::endl; } else { std::cout << "Result: Elevation is " << elevation << " meters." << std::endl; } } catch (const std::exception& e) { std::cerr << "An unexpected error occurred: " << e.what() << std::endl; return 1; } return 0; }