Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix loading traditional wms services
  • Loading branch information
nyalldawson committed Apr 4, 2023
1 parent 46a1087 commit 6cafd48
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/providers/wms/qgswmsprovider.cpp
Expand Up @@ -5246,6 +5246,16 @@ QList<QgsProviderSublayerDetails> QgsWmsProviderMetadata::querySublayers( const
else
{
const QVariantMap parts = decodeUri( uri );
if ( !parts.contains( QStringLiteral( "path" ) ) )
{
// online wms source
QgsProviderSublayerDetails details;
details.setUri( uri );
details.setProviderKey( key() );
details.setType( Qgis::LayerType::Raster );
return {details};
}

fileName = parts.value( QStringLiteral( "path" ) ).toString();
}

Expand Down
16 changes: 16 additions & 0 deletions tests/src/providers/testqgswmsprovider.cpp
Expand Up @@ -228,6 +228,14 @@ class TestQgsWmsProvider: public QgsTest
QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::Raster );
QVERIFY( !sublayers.at( 0 ).skippedContainerScan() );

// WMS source
sublayers = wmsMetadata->querySublayers( QStringLiteral( "http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
QCOMPARE( sublayers.size(), 1 );
QCOMPARE( sublayers.at( 0 ).providerKey(), QStringLiteral( "wms" ) );
QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::Raster );
QVERIFY( !sublayers.at( 0 ).skippedContainerScan() );

// fast scan flag
sublayers = wmsMetadata->querySublayers( QStringLiteral( "%1/isle_of_man.mbtiles" ).arg( TEST_DATA_DIR ), Qgis::SublayerQueryFlag::FastScan );
QCOMPARE( sublayers.size(), 1 );
Expand All @@ -246,6 +254,14 @@ class TestQgsWmsProvider: public QgsTest
QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::Raster );
QVERIFY( sublayers.at( 0 ).skippedContainerScan() );

// WMS source
sublayers = wmsMetadata->querySublayers( QStringLiteral( "http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ), Qgis::SublayerQueryFlag::FastScan );
QCOMPARE( sublayers.size(), 1 );
QCOMPARE( sublayers.at( 0 ).providerKey(), QStringLiteral( "wms" ) );
QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::Raster );
QVERIFY( !sublayers.at( 0 ).skippedContainerScan() );

// fast scan mode means that any mbtile file will be reported, including those with only vector tiles
// (we are skipping a potentially expensive db open and format check)
sublayers = wmsMetadata->querySublayers( QStringLiteral( "%1/vector_tile/mbtiles_vt.mbtiles" ).arg( TEST_DATA_DIR ), Qgis::SublayerQueryFlag::FastScan );
Expand Down

0 comments on commit 6cafd48

Please sign in to comment.