Skip to content

Commit

Permalink
[mdal Passing a direct layer uri to querySublayers should be acceptable
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jul 23, 2021
1 parent 9f63037 commit e6f0c92
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 17 deletions.
35 changes: 19 additions & 16 deletions src/providers/mdal/qgsmdalprovider.cpp
Expand Up @@ -1067,25 +1067,28 @@ QList<QgsProviderSublayerDetails> QgsMdalProviderMetadata::querySublayers( const

// get suffix, removing .gz if present
const QFileInfo info( uri );
// allow only normal files
if ( !info.isFile() )
return {};

const QString suffix = info.suffix().toLower();
if ( info.isDir() )
return {};

static QStringList sExtensions;
static std::once_flag initialized;
std::call_once( initialized, [ = ]( )
if ( info.isFile() )
{
QStringList meshExtensions;
QStringList datasetsExtensions;
QgsMdalProvider::fileMeshExtensions( sExtensions, datasetsExtensions );
Q_UNUSED( datasetsExtensions )
} );

// Filter files by extension
if ( !sExtensions.contains( suffix ) )
return {};
const QString suffix = info.suffix().toLower();

static QStringList sExtensions;
static std::once_flag initialized;
std::call_once( initialized, [ = ]( )
{
QStringList meshExtensions;
QStringList datasetsExtensions;
QgsMdalProvider::fileMeshExtensions( sExtensions, datasetsExtensions );
Q_UNUSED( datasetsExtensions )
} );

// Filter files by extension
if ( !sExtensions.contains( suffix ) )
return {};
}

const QStringList meshNames = QString( MDAL_MeshNames( uri.toUtf8() ) ).split( QStringLiteral( ";;" ) );

Expand Down
12 changes: 11 additions & 1 deletion tests/src/core/testqgsmeshlayer.cpp
Expand Up @@ -1616,6 +1616,17 @@ void TestQgsMeshLayer::testMdalProviderQuerySublayers()
std::unique_ptr< QgsMeshLayer > ml( qgis::down_cast< QgsMeshLayer * >( res.at( 0 ).toLayer( options ) ) );
QVERIFY( ml->isValid() );

// directly query MDAL uri
res = mdalMetadata->querySublayers( QStringLiteral( "2DM:\"%1/quad_and_triangle.2dm\"" ).arg( mDataDir ) );
QCOMPARE( res.count(), 1 );
QCOMPARE( res.at( 0 ).layerNumber(), 0 );
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "quad_and_triangle" ) );
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( "2DM:\"%1/quad_and_triangle.2dm\"" ).arg( mDataDir ) );
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "mdal" ) );
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::MeshLayer );
ml.reset( qgis::down_cast< QgsMeshLayer * >( res.at( 0 ).toLayer( options ) ) );
QVERIFY( ml->isValid() );

// mesh with two layers
res = mdalMetadata->querySublayers( mDataDir + "/manzese_1d2d_small_map.nc" );
QCOMPARE( res.count(), 2 );
Expand All @@ -1633,7 +1644,6 @@ void TestQgsMeshLayer::testMdalProviderQuerySublayers()
QCOMPARE( res.at( 1 ).type(), QgsMapLayerType::MeshLayer );
ml.reset( qgis::down_cast< QgsMeshLayer * >( res.at( 1 ).toLayer( options ) ) );
QVERIFY( ml->isValid() );

}

void TestQgsMeshLayer::test_temporal()
Expand Down

0 comments on commit e6f0c92

Please sign in to comment.