11inline dataset_ptr
open(
char const* file,
bool update =
false)
14 char const* opts[] = {
"MSSQLSPATIAL_USE_BCP=NO",
nullptr};
15 auto flags = update ? GDAL_OF_UPDATE : GDAL_OF_READONLY;
16 auto ret = dataset_ptr{GDALOpenEx(file, flags, 0, opts, 0)};
17 boat::check(!!ret, error_or(concat(
"GDALOpenEx ", file)));
24 char const* opts[] = {
"SPATIALITE=YES",
nullptr};
25 auto drv = GDALGetDriverByName(
driver);
26 boat::check(!!drv, error_or(concat(
"GDALGetDriverByName ",
driver)));
27 auto ret = dataset_ptr{GDALCreate(drv, file, 0, 0, 0, GDT_Unknown, opts)};
28 boat::check(!!ret, error_or(concat(
"GDALCreate ", file)));
39 auto drv = GDALGetDriverByName(
driver);
40 boat::check(!!drv, error_or(concat(
"GDALGetDriverByName ",
driver)));
41 auto ret = dataset_ptr{GDALCreate(
46 static_cast<int>(rast.
bands.size()),
47 GDALGetDataTypeByName(rast.
bands.at(0).type_name.data()),
49 boat::check(!!ret, error_or(concat(
"GDALCreate ", file)));
58 check(GDALSetGeoTransform(ret.get(), a.data()));
60 check(GDALSetSpatialRef(ret.get(), crs.get()));
61 for (
int i{}, n =
static_cast<int>(rast.
bands.size()); i < n; ++i) {
62 auto b = GDALGetRasterBand(ret.get(), i + 1);
64 GDALGetColorInterpretationByName(rast.
bands[i].color_name.data());
65 boat::check(ci != GCI_Undefined, rast.
bands[i].color_name);
66 check(GDALSetRasterColorInterpretation(b, ci));