Я получаю некоторый прототип Python кода, который использует GDAL, перенесенный в C ++, и я застрял в разделе, который считывает фрагменты данных высот из каталога и объединяет их в один набор данных. Код Python выглядит следующим образом:
# Read files containing elevation data in 1° x 1° squares.
geo_file_list = glob.glob ("./geodata/*.hgt")
# Turn the list of files into a list of datasets.
elv_dataset_list = list(map(gdal.Open, geo_file_list))
# Merge datasets into a single one.
elv_dataset = gdal.BuildVRT('', elv_dataset_list)
Я никогда не записываю результирующий VRT, оставляя только память для дальнейшей обработки. Я бы создал драйвер MEM и использовал его, если это возможно.
В C ++ я начинаю с:
// Set data directory.
std::string elev_dir = "./geodata/";
// Get list of files in data directory.
std::vector<GDALDataset *> elev_datasets;
// Read files into datasets.
for(auto& p: std::filesystem::directory_iterator(elev_dir)) {
elev_datasets.push_back((GDALDataset *) GDALOpen (p.path().c_str(), GA_ReadOnly));
}
Часть, с которой я борюсь, отправляет полученный std: : вектор в GDALBuildVRT (). Вполне возможно, что я все об этом ошибаюсь!