diff --git a/Modules/IO/IOGDAL/src/otbGDALOverviewsBuilder.cxx b/Modules/IO/IOGDAL/src/otbGDALOverviewsBuilder.cxx index c988cc5a6e5b970b733842e447b5fccc7116c89a..ee3d3e72e8f4f28cc8a674ab7537cd90fff07553 100644 --- a/Modules/IO/IOGDAL/src/otbGDALOverviewsBuilder.cxx +++ b/Modules/IO/IOGDAL/src/otbGDALOverviewsBuilder.cxx @@ -100,7 +100,32 @@ GDALOverviewsBuilder io->SetFileName( filename ); - return !io->GetSubDatasetInfo( names, descs ); + // no overview for containers + if(io->GetSubDatasetInfo( names, descs )) + return false; + + // no overview for VSI datasets + if (filename.size()>8 && filename.compare(0, 4, "/vsi") == 0) + { + size_t pos = filename.find('/',4); + if (pos != std::string::npos) + { + bool isVSI = true; + for (unsigned int i=4; i<pos ; i++) + { + int c = filename[i]; + if ( !(std::islower(c) || std::isdigit(c) || c == '_' ) ) + { + isVSI = false; + break; + } + } + if (isVSI) + return false; + } + } + + return true; } /***************************************************************************/