18#ifndef QGSALGORITHMXYZTILES_H
19#define QGSALGORITHMXYZTILES_H
31int tile2tms(
const int y,
const int zoom );
32int lon2tileX(
const double lon,
const int z );
33int lat2tileY(
const double lat,
const int z );
34double tileX2lon(
const int x,
const int z );
35double tileY2lat(
const int y,
const int z );
36void extent2TileXY(
const QgsRectangle extent,
const int zoom,
int &xMin,
int &yMin,
int &xMax,
int &yMax );
40 Tile(
const int x,
const int y,
const int z )
56 void addTile(
const int row,
const int col, Tile tileToAdd )
58 tiles.insert( QPair<int, int>( row, col ), tileToAdd );
71 const Tile first = tiles.first();
72 const Tile last = tiles.last();
73 return QgsRectangle( tileX2lon( first.x, first.z ), tileY2lat( last.y + 1, last.z ), tileX2lon( last.x + 1, last.z ), tileY2lat( first.y, first.z ) );
76 QMap<QPair<int, int>, Tile> tiles;
80QList<MetaTile> getMetatiles(
const QgsRectangle extent,
const int zoom,
const int tileSize = 4 );
89 QString
group()
const override;
90 QString
groupId()
const override;
97 void createCommonParameters();
99 bool prepareAlgorithm(
const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
override;
101 void checkLayersUsagePolicy( QgsProcessingFeedback *feedback );
104 virtual void processMetaTile( QgsMapRendererSequentialJob *job ) = 0;
106 QgsRectangle mExtent;
107 QColor mBackgroundColor;
111 bool mAntialias =
true;
112 int mJpgQuality = 75;
113 int mMetaTileSize = 4;
114 int mThreadsNumber = 1;
115 int mTileWidth = 256;
116 int mTileHeight = 256;
118 QList<QgsMapLayer *> mLayers;
119 QgsCoordinateReferenceSystem mWgs84Crs;
120 QgsCoordinateReferenceSystem mMercatorCrs;
121 QgsCoordinateTransform mSrc2Wgs;
122 QgsCoordinateTransform mWgs2Mercator;
123 QgsRectangle mWgs84Extent;
124 QgsProcessingFeedback *mFeedback =
nullptr;
125 long long mTotalTiles = 0;
126 long long mProcessedTiles = 0;
127 QgsCoordinateTransformContext mTransformContext;
128 QPointer<QEventLoop> mEventLoop;
129 QList<MetaTile> mMetaTiles;
130 QMap<QgsMapRendererSequentialJob *, MetaTile> mRendererJobs;
138class QgsXyzTilesDirectoryAlgorithm :
public QgsXyzTilesBaseAlgorithm
141 QgsXyzTilesDirectoryAlgorithm() =
default;
142 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
override;
143 QString name()
const override;
144 QString displayName()
const override;
145 QStringList tags()
const override;
146 QString shortHelpString()
const override;
147 QgsXyzTilesDirectoryAlgorithm *createInstance() const override
SIP_FACTORY;
150 QVariantMap processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
152 void processMetaTile( QgsMapRendererSequentialJob *job ) override;
162class QgsXyzTilesMbtilesAlgorithm : public QgsXyzTilesBaseAlgorithm
165 QgsXyzTilesMbtilesAlgorithm() =
default;
166 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
override;
167 QString name()
const override;
168 QString displayName()
const override;
169 QStringList tags()
const override;
170 QString shortHelpString()
const override;
171 QgsXyzTilesMbtilesAlgorithm *createInstance() const override
SIP_FACTORY;
174 QVariantMap processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
176 void processMetaTile( QgsMapRendererSequentialJob *job ) override;
179 std::unique_ptr<QgsMbTiles> mMbtilesWriter;
QFlags< ProcessingAlgorithmFlag > ProcessingAlgorithmFlags
Flags indicating how and when an algorithm operates and should be exposed to users.
ScaleCalculationMethod
Scale calculation logic.
@ HorizontalMiddle
Calculate horizontally, across midle of map.
Abstract base class for processing algorithms.
virtual QString group() const
Returns the name of the group this algorithm belongs to.
virtual bool prepareAlgorithm(const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback)
Prepares the algorithm to run using the specified parameters.
virtual QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
virtual Qgis::ProcessingAlgorithmFlags flags() const
Returns the flags indicating how and when the algorithm operates and should be exposed to users.
A rectangle specified with double values.