Program Listing for File GdalRaster.hpp
↰ Return to documentation for file (optional/gdal/src/navtk/geospatial/GdalRaster.hpp)
#pragma once
#include <array>
#include <map>
#include <memory>
#include <string>
#include <utility>
#include <navtk/aspn.hpp>
#include <navtk/geospatial/Raster.hpp>
namespace navtk {
namespace geospatial {
class GdalRaster : public Raster {
public:
GdalRaster(const std::string& filename, const std::string& undulation_path = "WW15MGH.GRD");
~GdalRaster() = default;
void scan_tile();
bool is_valid() const;
int get_width() const override;
int get_height() const override;
std::pair<double, double> wgs84_to_pixel(double latitude, double longitude) const override;
std::pair<double, double> pixel_to_wgs84(double x_pixel, double y_pixel) const;
double read_pixel(size_t idx_x, size_t idx_y) override;
std::string get_name() const override;
bool is_valid_data(double data) const override;
void unload() override;
private:
GdalRaster(const GdalRaster&) = delete;
GdalRaster& operator=(const GdalRaster&) = delete;
GdalRaster(GdalRaster&&) = delete;
GdalRaster& operator=(GdalRaster&&) = delete;
void transform_tile(AspnMeasurementAltitudeReference prev_ref,
AspnMeasurementAltitudeReference new_ref);
std::string filename;
bool valid = false;
size_t size_x;
size_t size_y;
std::vector<double> cached_tile;
bool cached = false;
std::array<double, 6> pixel_transform;
std::unique_ptr<OGRCoordinateTransformation, detail::TransformDelete>
wgs84_to_map_transformation;
std::unique_ptr<OGRCoordinateTransformation, detail::TransformDelete>
map_to_wgs84_transformation;
std::string undulation_path;
};
} // namespace geospatial
} // namespace navtk