Skip to content

Commit

Permalink
gdal_translate: make -stats option work with -co COPY_SRC_OVERVIEWS=Y…
Browse files Browse the repository at this point in the history
…ES (fixes #792)
  • Loading branch information
rouault committed Jul 24, 2018
1 parent 85cc62e commit 335cde3
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions gdal/apps/gdal_translate_lib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -923,7 +923,7 @@ GDALDatasetH GDALTranslate( const char *pszDest, GDALDatasetH hSrcDataset,
&& bSpatialArrangementPreserved
&& psOptions->nGCPCount == 0 && !bGotBounds
&& psOptions->pszOutputSRS == nullptr && !psOptions->bSetNoData && !psOptions->bUnsetNoData
&& psOptions->nRGBExpand == 0 && !psOptions->bStats && !psOptions->bNoRAT
&& psOptions->nRGBExpand == 0 && !psOptions->bNoRAT
&& psOptions->panColorInterp == nullptr )
{

Expand All @@ -950,6 +950,21 @@ GDALDatasetH GDALTranslate( const char *pszDest, GDALDatasetH hSrcDataset,
}
}

/* -------------------------------------------------------------------- */
/* Compute stats if required. */
/* -------------------------------------------------------------------- */
if (psOptions->bStats)
{
GDALDataset* poSrcDS = GDALDataset::FromHandle(hSrcDataset);
for( int i = 0; i < poSrcDS->GetRasterCount(); i++ )
{
double dfMin, dfMax, dfMean, dfStdDev;
poSrcDS->GetRasterBand(i+1)->ComputeStatistics(
psOptions->bApproxStats,
&dfMin, &dfMax, &dfMean, &dfStdDev,
GDALDummyProgress, nullptr );
}
}

hOutDS = GDALCreateCopy( hDriver, pszDest, hSrcDataset,
psOptions->bStrict, psOptions->papszCreateOptions,
Expand All @@ -960,6 +975,13 @@ GDALDatasetH GDALTranslate( const char *pszDest, GDALDatasetH hSrcDataset,
return hOutDS;
}

if( CSLFetchNameValue(psOptions->papszCreateOptions, "COPY_SRC_OVERVIEWS") )
{
CPLError(CE_Warning, CPLE_AppDefined,
"General options of gdal_translate make the "
"COPY_SRC_OVERVIEWS creation option ineffective");
}

/* -------------------------------------------------------------------- */
/* Establish some parameters. */
/* -------------------------------------------------------------------- */
Expand Down Expand Up @@ -1223,7 +1245,7 @@ GDALDatasetH GDALTranslate( const char *pszDest, GDALDatasetH hSrcDataset,
/* -------------------------------------------------------------------- */
/* Transfer generally applicable metadata. */
/* -------------------------------------------------------------------- */
GDALDataset* poSrcDS = reinterpret_cast<GDALDataset*>(hSrcDataset);
GDALDataset* poSrcDS = GDALDataset::FromHandle(hSrcDataset);
char** papszMetadata = CSLDuplicate(poSrcDS->GetMetadata());
if ( psOptions->nScaleRepeat > 0 || psOptions->bUnscale || psOptions->eOutputType != GDT_Unknown )
{
Expand Down

0 comments on commit 335cde3

Please sign in to comment.