Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add tilemap information to layer properties dialog
  • Loading branch information
nyalldawson committed May 16, 2023
1 parent bc2cc98 commit 7d7c580
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/core/vectortile/qgsarcgisvectortileservicedataprovider.cpp
Expand Up @@ -156,6 +156,16 @@ QString QgsArcGisVectorTileServiceDataProvider::styleUrl() const
+ '/' + mArcgisLayerConfiguration.value( QStringLiteral( "defaultStyles" ) ).toString();
}

QString QgsArcGisVectorTileServiceDataProvider::htmlMetadata() const
{
QString metadata;

if ( !mTileMapUrl.isEmpty() )
metadata += QStringLiteral( "<tr><td class=\"highlight\">" ) % tr( "Tilemap" ) % QStringLiteral( "</td><td><a href=\"%1\">%1</a>" ).arg( mTileMapUrl ) % QStringLiteral( "</td></tr>\n" );

return metadata;
}

bool QgsArcGisVectorTileServiceDataProvider::setupArcgisVectorTileServiceConnection()
{
QGIS_PROTECT_QOBJECT_THREAD_ACCESS
Expand Down Expand Up @@ -261,7 +271,8 @@ bool QgsArcGisVectorTileServiceDataProvider::setupArcgisVectorTileServiceConnect
const QString tileMapEndpoint = mArcgisLayerConfiguration.value( QStringLiteral( "tileMap" ) ).toString();
if ( !tileMapEndpoint.isEmpty() )
{
QUrl tilemapUrl( tileServiceUri + '/' + tileMapEndpoint );
mTileMapUrl = tileServiceUri + '/' + tileMapEndpoint;
QUrl tilemapUrl( mTileMapUrl );
tilemapUrl.setQuery( query );

QNetworkRequest tileMapRequest = QNetworkRequest( tilemapUrl );
Expand Down
2 changes: 2 additions & 0 deletions src/core/vectortile/qgsarcgisvectortileservicedataprovider.h
Expand Up @@ -53,6 +53,7 @@ class CORE_EXPORT QgsArcGisVectorTileServiceDataProvider : public QgsXyzVectorTi
QgsLayerMetadata layerMetadata() const override;
QVariantMap styleDefinition() const override;
QString styleUrl() const override;
QString htmlMetadata() const override;

static QString ARCGIS_VT_SERVICE_DATA_PROVIDER_KEY;
static QString ARCGIS_VT_SERVICE_DATA_PROVIDER_DESCRIPTION;
Expand All @@ -73,6 +74,7 @@ class CORE_EXPORT QgsArcGisVectorTileServiceDataProvider : public QgsXyzVectorTi
QgsCoordinateReferenceSystem mCrs;

QgsLayerMetadata mLayerMetadata;
QString mTileMapUrl;
};


Expand Down
7 changes: 7 additions & 0 deletions src/core/vectortile/qgsvectortiledataprovider.cpp
Expand Up @@ -96,5 +96,12 @@ QImage QgsVectorTileDataProvider::spriteImage() const
return QImage();
}

QString QgsVectorTileDataProvider::htmlMetadata() const
{
QGIS_PROTECT_QOBJECT_THREAD_ACCESS

return QString();
}



6 changes: 6 additions & 0 deletions src/core/vectortile/qgsvectortiledataprovider.h
Expand Up @@ -149,6 +149,12 @@ class CORE_EXPORT QgsVectorTileDataProvider : public QgsDataProvider
* \see spriteDefinition()
*/
virtual QImage spriteImage() const;

/**
* Returns metadata in a format suitable for feeding directly
* into a subset of the GUI properties "Metadata" tab.
*/
virtual QString htmlMetadata() const;
};


Expand Down
3 changes: 3 additions & 0 deletions src/core/vectortile/qgsvectortilelayer.cpp
Expand Up @@ -518,6 +518,9 @@ QString QgsVectorTileLayer::htmlMetadata() const

info += QStringLiteral( "<tr><td class=\"highlight\">" ) % tr( "Zoom levels" ) % QStringLiteral( "</td><td>" ) % QStringLiteral( "%1 - %2" ).arg( sourceMinZoom() ).arg( sourceMaxZoom() ) % QStringLiteral( "</td></tr>\n" );

if ( mDataProvider )
info += qobject_cast< const QgsVectorTileDataProvider * >( mDataProvider.get() )->htmlMetadata();

info += QLatin1String( "</table>\n<br>" );

// CRS
Expand Down
17 changes: 17 additions & 0 deletions src/core/vectortile/qgsvtpkvectortiledataprovider.cpp
Expand Up @@ -208,6 +208,23 @@ QList<QgsVectorTileRawData> QgsVtpkVectorTileDataProvider::readTiles( const QgsT
return rawTiles;
}

QString QgsVtpkVectorTileDataProvider::htmlMetadata() const
{
QString metadata;

QgsDataSourceUri dsUri;
dsUri.setEncodedUri( dataSourceUri() );
QgsVtpkTiles reader( dsUri.param( QStringLiteral( "url" ) ) );
reader.open();

if ( !reader.rootTileMap().isEmpty() )
metadata += QStringLiteral( "<tr><td class=\"highlight\">" ) % tr( "VTPK storage" ) % QStringLiteral( "</td><td>" ) % tr( "Indexed VTPK (tilemap is present)" ) % QStringLiteral( "</td></tr>\n" );
else
metadata += QStringLiteral( "<tr><td class=\"highlight\">" ) % tr( "VTPK storage" ) % QStringLiteral( "</td><td>" ) % tr( "Flat VTPK (no tilemap)" ) % QStringLiteral( "</td></tr>\n" );

return metadata;
}

QByteArray QgsVtpkVectorTileDataProvider::loadFromVtpk( QgsVtpkTiles &vtpkTileReader, const QgsTileXYZ &id, QgsFeedback * )
{
const QByteArray tileData = vtpkTileReader.tileData( id.zoomLevel(), id.column(), id.row() );
Expand Down
1 change: 1 addition & 0 deletions src/core/vectortile/qgsvtpkvectortiledataprovider.h
Expand Up @@ -60,6 +60,7 @@ class CORE_EXPORT QgsVtpkVectorTileDataProvider : public QgsVectorTileDataProvid
QImage spriteImage() const override;
QByteArray readTile( const QgsTileMatrixSet &tileMatrix, const QgsTileXYZ &id, QgsFeedback *feedback = nullptr ) const override;
QList<QgsVectorTileRawData> readTiles( const QgsTileMatrixSet &, const QVector<QgsTileXYZ> &tiles, QgsFeedback *feedback = nullptr ) const override;
QString htmlMetadata() const override;

static QString DATA_PROVIDER_KEY;
static QString DATA_PROVIDER_DESCRIPTION;
Expand Down

0 comments on commit 7d7c580

Please sign in to comment.