GDALOpen在GEOTiff文件上返回null

时间:2019-10-16 08:52:52

标签: c++ gdal geotiff

我正在尝试使用gdal Sub DateStomper() Do Application.ScreenUpdating = False Worksheets("xxx").Select Range("AJ2").End(xlDown).Offset(1, 0).Select ActiveCell.FormulaR1C1 = "=TODAY()" Loop Until Range("AJ2").End(xlDown).Offset(1, 0).Row = Range("B2").End(xlDown).Offset(1, 0).Row End Sub 打开GEOTiff图像。 我的代码:

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 存在,并且已从heresrtm_55_01)下载。

我认为也许我还是犯了一个错误。我看着sources gdal_contour,那里的代码完全一样。

此外,我尝试在文件上使用"/home/gamma/srtm_55_01.tif"-一切都成功。

gdal_contour

1 个答案:

答案 0 :(得分:1)

尝试按照以下顺序打开栅格文件

  /* 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 );