@@ -4597,7 +4597,14 @@ bool QgisApp::openLayer( const QString & fileName, bool allowInteractive )
4597
4597
// try to load it as raster
4598
4598
if ( QgsRasterLayer::isValidRasterFileName ( fileName ) )
4599
4599
{
4600
- ok = addRasterLayer ( fileName, fileInfo.completeBaseName () );
4600
+ // open .adf as a directory
4601
+ if ( fileName.toLower ().endsWith ( " .adf" ) )
4602
+ {
4603
+ QString dirName = fileInfo.path ();
4604
+ ok = addRasterLayer ( dirName, QFileInfo ( dirName ).completeBaseName () );
4605
+ }
4606
+ else
4607
+ ok = addRasterLayer ( fileName, fileInfo.completeBaseName () );
4601
4608
}
4602
4609
// TODO - should we really call isValidRasterFileName() before addRasterLayer()
4603
4610
// this results in 2 calls to GDALOpen()
@@ -9866,7 +9873,13 @@ QgsRasterLayer* QgisApp::addRasterLayerPrivate(
9866
9873
// XXX ya know QgsRasterLayer can snip out the basename on its own;
9867
9874
// XXX why do we have to pass it in for it?
9868
9875
// ET : we may not be getting "normal" files here, so we still need the baseName argument
9869
- if ( providerKey.isEmpty () )
9876
+ if ( !providerKey.isEmpty () && uri.toLower ().endsWith ( " .adf" ) )
9877
+ {
9878
+ QFileInfo fileInfo ( uri );
9879
+ QString dirName = fileInfo.path ();
9880
+ layer = new QgsRasterLayer ( dirName, QFileInfo ( dirName ).completeBaseName (), " gdal" );
9881
+ }
9882
+ else if ( providerKey.isEmpty () )
9870
9883
layer = new QgsRasterLayer ( uri, baseName ); // fi.completeBaseName());
9871
9884
else
9872
9885
layer = new QgsRasterLayer ( uri, baseName, providerKey );
@@ -9997,24 +10010,17 @@ bool QgisApp::addRasterLayers( QStringList const &theFileNameQStringList, bool g
9997
10010
if ( QgsRasterLayer::isValidRasterFileName ( *myIterator, errMsg ) )
9998
10011
{
9999
10012
QFileInfo myFileInfo ( *myIterator );
10000
- // get the directory the .adf file was in
10001
- QString myDirNameQString = myFileInfo.path ();
10002
- // extract basename
10003
- QString myBaseNameQString = myFileInfo.completeBaseName ();
10004
- // only allow one copy of a ai grid file to be loaded at a
10005
- // time to prevent the user selecting all adfs in 1 dir which
10006
- // actually represent 1 coverage,
10007
10013
10008
10014
// try to create the layer
10009
- QgsRasterLayer *layer = addRasterLayerPrivate ( *myIterator, myBaseNameQString ,
10015
+ QgsRasterLayer *layer = addRasterLayerPrivate ( *myIterator, myFileInfo. completeBaseName () ,
10010
10016
QString (), guiWarning, true );
10011
10017
if ( layer && layer->isValid () )
10012
10018
{
10013
10019
// only allow one copy of a ai grid file to be loaded at a
10014
10020
// time to prevent the user selecting all adfs in 1 dir which
10015
10021
// actually represent 1 coverate,
10016
10022
10017
- if ( myBaseNameQString .toLower ().endsWith ( " .adf" ) )
10023
+ if ( myFileInfo. fileName () .toLower ().endsWith ( " .adf" ) )
10018
10024
{
10019
10025
break ;
10020
10026
}
0 commit comments