GDALOpen возвращает ноль в файле GEOTiff - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь открыть изображение GEOTiff с помощью gdal library. Мой код:

GDALDatasetH hSrcDS = GDALOpen("/home/gamma/srtm_55_01.tif", GA_ReadOnly);
if (hSrcDS == nullptr)
    printf("failure");
else
    printf("success");

И это вывод:

ERROR 4: `/home/gamma/srtm_55_01.tif' not recognized as a supported file format.
failure

Также я попытался использовать относительный путь, но он тоже не работал.

Файл "/home/gamma/srtm_55_01.tif" существует и был загружен с здесь ( srtm_55_01 ).

Я подумал, что, возможно, я все-таки допустил ошибку. Я посмотрел на sources gdal_contour и там точно такой же код.

Более того, я попытался использовать gdal_contour в моем файле - все прошло успешно.

gamma@gamma:~$ gdalinfo --version
GDAL 2.2.3, released 2017/11/20

1 Ответ

1 голос
/ 17 октября 2019

Попробуйте выполнить следующий порядок открытия растровых файлов

  /* register all known GDAL drivers.
   * attempt to suppress GDAL warnings.
   */

  GDALAllRegister();
  CPLPushErrorHandler(CPLQuietErrorHandler);
 /* -------------------------------------------------------------------- */
 /*      Open source raster file.                                        */
 /* -------------------------------------------------------------------- */
    GDALDatasetH hSrcDS = GDALOpen(pszSrcFilename, GA_ReadOnly);
    if( hSrcDS == nullptr )
        exit( 2 );

    GDALRasterBandH hBand = GDALGetRasterBand( hSrcDS, nBandIn );
    if( hBand == nullptr )
    {
        CPLError( CE_Failure, CPLE_AppDefined,
                  "Band %d does not exist on dataset.",
                  nBandIn );
        exit(2);
    }

    if( !bNoDataSet && !bIgnoreNoData )
        dfNoData = GDALGetRasterNoDataValue( hBand, &bNoDataSet );

...