GDALDriver ::创建GTiff分段错误

时间:2015-04-17 04:08:49

标签: c++ segmentation-fault gdal

我是使用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软件包。

有人能解释一下这个问题吗?

1 个答案:

答案 0 :(得分:0)

我知道这是一个古老的问题,这个问题可能已经解决了很长时间,但是我认为我会把答案扔给别人。毕竟,当我遇到这个问题时,我被引导到了这里,似乎这个问题有很多见解。

如果您的代码不起作用,并且在加载驱动程序时遇到问题,我建议添加行GDALAllRegister();。我和您遵循的是同一教程,他们提到在教程的顶部添加此行,但是如果您像我一样,急于转到所需的部分,即教程的“创建”部分,则可能忽略了该步骤。

希望这个答案可以帮助某人,即使不是问题的原始作者。