Skip to content

Commit

Permalink
ESRI Tin metadata.xml file should also be ignored by gdal provider
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Oct 6, 2021
1 parent 111680d commit 92707dc
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/core/providers/gdal/qgsgdalprovider.cpp
Expand Up @@ -3677,6 +3677,17 @@ QList<QgsProviderSublayerDetails> QgsGdalProviderMetadata::querySublayers( const
return {};
}

// metadata.xml file next to tdenv?.adf files is a subcomponent of an ESRI tin layer alone, shouldn't be exposed
if ( pathInfo.fileName().compare( QLatin1String( "metadata.xml" ), Qt::CaseInsensitive ) == 0 )
{
const QDir dir = pathInfo.dir();
if ( dir.exists( QStringLiteral( "tdenv9.adf" ) )
|| dir.exists( QStringLiteral( "tdenv.adf" ) )
|| dir.exists( QStringLiteral( "TDENV9.ADF" ) )
|| dir.exists( QStringLiteral( "TDENV.ADF" ) ) )
return {};
}

QgsProviderSublayerDetails details;
details.setType( QgsMapLayerType::RasterLayer );
details.setProviderKey( QStringLiteral( "gdal" ) );
Expand Down
8 changes: 8 additions & 0 deletions tests/src/core/testqgsgdalprovider.cpp
Expand Up @@ -605,6 +605,10 @@ void TestQgsGdalProvider::testGdalProviderQuerySublayers()
QCOMPARE( res.at( 0 ).driverName(), QStringLiteral( "GTiff" ) );
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 0 ).toLayer( options ) ) );
QVERIFY( rl->isValid() );

// metadata.xml file next to tdenv?.adf file -- this is a subcomponent of an ESRI tin layer, should not be exposed
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/esri_tin/metadata.xml" );
QVERIFY( res.empty() );
}

void TestQgsGdalProvider::testGdalProviderQuerySublayersFastScan()
Expand Down Expand Up @@ -677,6 +681,10 @@ void TestQgsGdalProvider::testGdalProviderQuerySublayersFastScan()
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
QVERIFY( res.at( 0 ).skippedContainerScan() );

// metadata.xml file next to tdenv?.adf file -- this is a subcomponent of an ESRI tin layer, should not be exposed
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/esri_tin/metadata.xml", Qgis::SublayerQueryFlag::FastScan );
QVERIFY( res.empty() );
}

QGSTEST_MAIN( TestQgsGdalProvider )
Expand Down

0 comments on commit 92707dc

Please sign in to comment.