3.3.9.32.1.1. Program Listing for File wrapper.hΒΆ

#ifndef SIRIUS_GDAL_WRAPPER_H_
#define SIRIUS_GDAL_WRAPPER_H_

#include <string>

#include "sirius/gdal/types.h"
#include "sirius/image.h"

namespace sirius {
namespace gdal {

struct GeoReference {
    GeoReference();
    GeoReference(const std::vector<double>& geo_trans,
                 const std::string& proj_ref);

    ~GeoReference() = default;
    GeoReference(const GeoReference&) = default;
    GeoReference& operator=(const GeoReference&) = default;
    GeoReference(GeoReference&&) = default;
    GeoReference& operator=(GeoReference&&) = default;

    std::vector<double> geo_transform;
    std::string projection_ref;
    bool is_initialized{false};
};

Image LoadImage(const std::string& filepath);

void SaveImage(const Image& image, const std::string& output_filepath,
               const GeoReference& geoRef = {});

DatasetUPtr LoadDataset(const std::string& filepath);

DatasetUPtr CreateDataset(const std::string& filepath, int w, int h,
                          int n_bands, const GeoReference& geo_ref = {});

GeoReference ComputeResampledGeoReference(const std::string& input_path,
                                          const ZoomRatio& zoom_ratio);

std::vector<double> ComputeResampledGeoTransform(GDALDataset* dataset,
                                                 const ZoomRatio& zoom_ratio);

}  // namespace gdal
}  // namespace sirius

#endif  // SIRIUS_GDAL_WRAPPER_H_