SXXXXXXX_GeoElevation/source_c/main.cpp

58 lines
1.6 KiB
C++

#include <iostream>
#include <string>
#include <stdexcept>
#include "ElevationReader.h"
void print_usage()
{
std::cerr << "Usage: elevation_cli <path_to_hgt_directory> <latitude> <longitude>" << 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;
}