1 /*************************************************************************** 2 qgsvectortilemvtdecoder.h 3 -------------------------------------- 4 Date : March 2020 5 Copyright : (C) 2020 by Martin Dobias 6 Email : wonder dot sk at gmail dot com 7 *************************************************************************** 8 * * 9 * This program is free software; you can redistribute it and/or modify * 10 * it under the terms of the GNU General Public License as published by * 11 * the Free Software Foundation; either version 2 of the License, or * 12 * (at your option) any later version. * 13 * * 14 ***************************************************************************/ 15 16 #ifndef QGSVECTORTILEMVTDECODER_H 17 #define QGSVECTORTILEMVTDECODER_H 18 19 #define SIP_NO_FILE 20 21 class QgsFeature; 22 23 #include <QStringList> 24 #include <QMap> 25 26 #include "vector_tile.pb.h" 27 28 #include "qgsvectortilerenderer.h" 29 30 /** 31 * \ingroup core 32 * \brief This class is responsible for decoding raw tile data written with Mapbox Vector Tiles encoding. 33 * 34 * \since QGIS 3.14 35 */ 36 class CORE_EXPORT QgsVectorTileMVTDecoder 37 { 38 public: 39 QgsVectorTileMVTDecoder(); 40 ~QgsVectorTileMVTDecoder(); 41 42 //! Tries to decode raw tile data, returns true on success 43 bool decode( QgsTileXYZ tileID, const QByteArray &rawTileData ); 44 45 //! Returns a list of sub-layer names in a tile. It can only be called after a successful decode() 46 QStringList layers() const; 47 48 //! Returns a list of all field names in a tile. It can only be called after a successful decode() 49 QStringList layerFieldNames( const QString &layerName ) const; 50 51 /** 52 * Returns decoded features grouped by sub-layers. It can only be called after a successful decode() 53 * 54 * If \a layerSubset is specified then only features from the specified layers will be returned. 55 */ 56 QgsVectorTileFeatures layerFeatures( const QMap<QString, QgsFields> &perLayerFields, const QgsCoordinateTransform &ct, 57 const QSet< QString > *layerSubset = nullptr ) const; 58 59 private: 60 vector_tile::Tile tile; 61 QgsTileXYZ mTileID; 62 QMap<QString, int> mLayerNameToIndex; 63 }; 64 65 #endif // QGSVECTORTILEMVTDECODER_H 66