18#ifndef QGSALGORITHMXYZTILES_H
19#define QGSALGORITHMXYZTILES_H
30int tile2tms(
const int y,
const int zoom );
31int lon2tileX(
const double lon,
const int z );
32int lat2tileY(
const double lat,
const int z );
33double tileX2lon(
const int x,
const int z );
34double tileY2lat(
const int y,
const int z );
35void extent2TileXY(
const QgsRectangle extent,
const int zoom,
int &xMin,
int &yMin,
int &xMax,
int &yMax );
39 Tile(
const int x,
const int y,
const int z )
55 void addTile(
const int row,
const int col, Tile tileToAdd )
57 tiles.insert( QPair<int, int>( row, col ), tileToAdd );
70 const Tile first = tiles.first();
71 const Tile last = tiles.last();
72 return QgsRectangle( tileX2lon( first.x, first.z ), tileY2lat( last.y + 1, last.z ), tileX2lon( last.x + 1, last.z ), tileY2lat( first.y, first.z ) );
75 QMap<QPair<int, int>, Tile> tiles;
79QList<MetaTile> getMetatiles(
const QgsRectangle extent,
const int zoom,
const int tileSize = 4 );
88 QString
group()
const override;
89 QString
groupId()
const override;
96 void createCommonParameters();
98 bool prepareAlgorithm(
const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
override;
100 void checkLayersUsagePolicy( QgsProcessingFeedback *feedback );
103 virtual void processMetaTile( QgsMapRendererSequentialJob *job ) = 0;
105 QgsRectangle mExtent;
106 QColor mBackgroundColor;
110 bool mAntialias =
true;
111 int mJpgQuality = 75;
112 int mMetaTileSize = 4;
113 int mThreadsNumber = 1;
114 int mTileWidth = 256;
115 int mTileHeight = 256;
117 QList<QgsMapLayer *> mLayers;
118 QgsCoordinateReferenceSystem mWgs84Crs;
119 QgsCoordinateReferenceSystem mMercatorCrs;
120 QgsCoordinateTransform mSrc2Wgs;
121 QgsCoordinateTransform mWgs2Mercator;
122 QgsRectangle mWgs84Extent;
123 QgsProcessingFeedback *mFeedback =
nullptr;
124 long long mTotalTiles = 0;
125 long long mProcessedTiles = 0;
126 QgsCoordinateTransformContext mTransformContext;
127 QPointer<QEventLoop> mEventLoop;
128 QList<MetaTile> mMetaTiles;
129 QMap<QgsMapRendererSequentialJob *, MetaTile> mRendererJobs;
137class QgsXyzTilesDirectoryAlgorithm :
public QgsXyzTilesBaseAlgorithm
140 QgsXyzTilesDirectoryAlgorithm() =
default;
141 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
override;
142 QString name()
const override;
143 QString displayName()
const override;
144 QStringList tags()
const override;
145 QString shortHelpString()
const override;
146 QgsXyzTilesDirectoryAlgorithm *createInstance() const override
SIP_FACTORY;
149 QVariantMap processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
151 void processMetaTile( QgsMapRendererSequentialJob *job ) override;
161class QgsXyzTilesMbtilesAlgorithm : public QgsXyzTilesBaseAlgorithm
164 QgsXyzTilesMbtilesAlgorithm() =
default;
165 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
override;
166 QString name()
const override;
167 QString displayName()
const override;
168 QStringList tags()
const override;
169 QString shortHelpString()
const override;
170 QgsXyzTilesMbtilesAlgorithm *createInstance() const override
SIP_FACTORY;
173 QVariantMap processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
175 void processMetaTile( QgsMapRendererSequentialJob *job ) override;
178 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.