mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-07 00:15:48 -04:00
Merge pull request #2517 from rldhont/raster_open_adf
Open adf raster file as a directory
This commit is contained in:
commit
6035d98b4a
@ -4597,7 +4597,14 @@ bool QgisApp::openLayer( const QString & fileName, bool allowInteractive )
|
|||||||
// try to load it as raster
|
// try to load it as raster
|
||||||
if ( QgsRasterLayer::isValidRasterFileName( fileName ) )
|
if ( QgsRasterLayer::isValidRasterFileName( fileName ) )
|
||||||
{
|
{
|
||||||
ok = addRasterLayer( fileName, fileInfo.completeBaseName() );
|
// open .adf as a directory
|
||||||
|
if ( fileName.toLower().endsWith( ".adf" ) )
|
||||||
|
{
|
||||||
|
QString dirName = fileInfo.path();
|
||||||
|
ok = addRasterLayer( dirName, QFileInfo( dirName ).completeBaseName() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ok = addRasterLayer( fileName, fileInfo.completeBaseName() );
|
||||||
}
|
}
|
||||||
// TODO - should we really call isValidRasterFileName() before addRasterLayer()
|
// TODO - should we really call isValidRasterFileName() before addRasterLayer()
|
||||||
// this results in 2 calls to GDALOpen()
|
// this results in 2 calls to GDALOpen()
|
||||||
@ -9866,7 +9873,13 @@ QgsRasterLayer* QgisApp::addRasterLayerPrivate(
|
|||||||
// XXX ya know QgsRasterLayer can snip out the basename on its own;
|
// XXX ya know QgsRasterLayer can snip out the basename on its own;
|
||||||
// XXX why do we have to pass it in for it?
|
// XXX why do we have to pass it in for it?
|
||||||
// ET : we may not be getting "normal" files here, so we still need the baseName argument
|
// ET : we may not be getting "normal" files here, so we still need the baseName argument
|
||||||
if ( providerKey.isEmpty() )
|
if ( !providerKey.isEmpty() && uri.toLower().endsWith( ".adf" ) )
|
||||||
|
{
|
||||||
|
QFileInfo fileInfo( uri );
|
||||||
|
QString dirName = fileInfo.path();
|
||||||
|
layer = new QgsRasterLayer( dirName, QFileInfo( dirName ).completeBaseName(), "gdal" );
|
||||||
|
}
|
||||||
|
else if ( providerKey.isEmpty() )
|
||||||
layer = new QgsRasterLayer( uri, baseName ); // fi.completeBaseName());
|
layer = new QgsRasterLayer( uri, baseName ); // fi.completeBaseName());
|
||||||
else
|
else
|
||||||
layer = new QgsRasterLayer( uri, baseName, providerKey );
|
layer = new QgsRasterLayer( uri, baseName, providerKey );
|
||||||
@ -9997,16 +10010,9 @@ bool QgisApp::addRasterLayers( QStringList const &theFileNameQStringList, bool g
|
|||||||
if ( QgsRasterLayer::isValidRasterFileName( *myIterator, errMsg ) )
|
if ( QgsRasterLayer::isValidRasterFileName( *myIterator, errMsg ) )
|
||||||
{
|
{
|
||||||
QFileInfo myFileInfo( *myIterator );
|
QFileInfo myFileInfo( *myIterator );
|
||||||
// get the directory the .adf file was in
|
|
||||||
QString myDirNameQString = myFileInfo.path();
|
|
||||||
//extract basename
|
|
||||||
QString myBaseNameQString = myFileInfo.completeBaseName();
|
|
||||||
//only allow one copy of a ai grid file to be loaded at a
|
|
||||||
//time to prevent the user selecting all adfs in 1 dir which
|
|
||||||
//actually represent 1 coverage,
|
|
||||||
|
|
||||||
// try to create the layer
|
// try to create the layer
|
||||||
QgsRasterLayer *layer = addRasterLayerPrivate( *myIterator, myBaseNameQString,
|
QgsRasterLayer *layer = addRasterLayerPrivate( *myIterator, myFileInfo.completeBaseName(),
|
||||||
QString(), guiWarning, true );
|
QString(), guiWarning, true );
|
||||||
if ( layer && layer->isValid() )
|
if ( layer && layer->isValid() )
|
||||||
{
|
{
|
||||||
@ -10014,7 +10020,7 @@ bool QgisApp::addRasterLayers( QStringList const &theFileNameQStringList, bool g
|
|||||||
//time to prevent the user selecting all adfs in 1 dir which
|
//time to prevent the user selecting all adfs in 1 dir which
|
||||||
//actually represent 1 coverate,
|
//actually represent 1 coverate,
|
||||||
|
|
||||||
if ( myBaseNameQString.toLower().endsWith( ".adf" ) )
|
if ( myFileInfo.fileName().toLower().endsWith( ".adf" ) )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user