我是使用GDAL的新手,并且在使用GDALDriver::Create()方法创建GDALDataset时遇到问题。在这种情况下,我正在使用C++。最终,我正在尝试创建一个栅格并将值从数组写入栅格。这里给出了生成创建数据集问题的代码的最小工作示例:
#include <iostream>
#include </usr/include/gdal/gdal_priv.h>
int main(){
std::cout << "starting GDAL businessn";
const char *raster_format = "GTiff";
GDALDriver *g_driver;
g_driver = GetGDALDriverManager()->GetDriverByName(raster_format);
GDALDataset *g_dataset;
const char *test_file = "test_file.tif";
char **raster_creation_options = NULL;
std::cout << "raster options createdn";
g_dataset = g_driver->Create(test_file,
100,200,1,GDT_Float32,
raster_creation_options); //<--- seg faults
std::cout << "dataset createdn";
}
生成的控制台如下所示:
starting GDAL business
raster options created
Segmentation fault (core dumped)
我只是按照基本的 API 教程(链接)进行操作,但遇到了这个问题。我在 Ubuntu 14.04 上,使用存储库的 libgdal 包。
谁能阐明这个问题?
我知道这是一个老问题,这个问题可能早就解决了,但我想我会把我的答案扔进戒指里。 毕竟,当我遇到这个问题时,我被引导到这里,似乎这个问题有相当多的观点。
如果您的代码不起作用,并且您在加载驱动程序时遇到问题,我建议您添加行GDALAllRegister();
. 我和你遵循了相同的教程,他们提到在教程的顶部添加这一行,但如果你像我一样,直接冲到你需要的部分,教程的创建部分,你可能忽略了这一步。
希望这个答案对某人有所帮助,如果不是问题的原始作者。