我是使用GDAL的新手,并且无法使用GDALDriver :: Create()方法创建GDALDataset。在这种情况下,我使用的是C ++。最终我试图创建一个栅格并将数值从数组写入栅格。这里给出了生成数据集问题的代码的最小工作示例:
#include <iostream>
#include </usr/include/gdal/gdal_priv.h>
int main(){
std::cout << "starting GDAL business\n";
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 created\n";
g_dataset = g_driver->Create(test_file,
100,200,1,GDT_Float32,
raster_creation_options); //<--- seg faults
std::cout << "dataset created\n";
}
生成的控制台如下所示:
starting GDAL business
raster options created
Segmentation fault (core dumped)
我只是关注基本的API教程(http://www.gdal.org/gdal_tutorial.html),但遇到了这个问题。我在Ubuntu 14.04上,使用了存储库的libgdal软件包。
有人能解释一下这个问题吗?
答案 0 :(得分:0)
我知道这是一个古老的问题,这个问题可能已经解决了很长时间,但是我认为我会把答案扔给别人。毕竟,当我遇到这个问题时,我被引导到了这里,似乎这个问题有很多见解。
如果您的代码不起作用,并且在加载驱动程序时遇到问题,我建议添加行GDALAllRegister();
。我和您遵循的是同一教程,他们提到在教程的顶部添加此行,但是如果您像我一样,急于转到所需的部分,即教程的“创建”部分,则可能忽略了该步骤。
希望这个答案可以帮助某人,即使不是问题的原始作者。