QGIS API Documentation  3.20.0-Odense (decaadbb31)
qgsterraindownloader.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsterraindownloader.h
3  --------------------------------------
4  Date : March 2019
5  Copyright : (C) 2019 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 QGSTERRAINDOWNLOADER_H
17 #define QGSTERRAINDOWNLOADER_H
18 
19 #include "qgis_3d.h"
20 
21 #include <memory>
22 #include <QByteArray>
23 #include <QImage>
24 
26 
27 class QgsRectangle;
29 class QgsRasterLayer;
31 
32 #define SIP_NO_FILE
33 
48 class _3D_EXPORT QgsTerrainDownloader
49 {
50 
51  public:
52 
57  QgsTerrainDownloader( const QgsCoordinateTransformContext &transformContext );
58 
60 
62  struct DataSource
63  {
64  QString uri;
65  int zMin = 0;
66  int zMax = 0;
67  };
68 
70  static DataSource defaultDataSource();
71 
73  void setDataSource( const DataSource &ds );
74 
76  DataSource dataSource() const { return mDataSource; }
77 
82  QByteArray getHeightMap( const QgsRectangle &extentOrig, int res, const QgsCoordinateReferenceSystem &destCrs, const QgsCoordinateTransformContext &context = QgsCoordinateTransformContext(), QString tmpFilenameImg = QString(), QString tmpFilenameTif = QString() );
83 
84  private:
85 
90  double findBestTileResolution( double requestedMupp );
91 
95  static void adjustExtentAndResolution( double mupp, const QgsRectangle &extentOrig, QgsRectangle &extent, int &res );
96 
101  static void tileImageToHeightMap( const QImage &img, QByteArray &heightMap );
102 
103  private:
104  DataSource mDataSource;
105  std::unique_ptr<QgsRasterLayer> mOnlineDtm;
106  double mXSpan = 0;
107 };
108 
109 #endif // QGSTERRAINDOWNLOADER_H
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Represents a raster layer.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
DataSource dataSource() const
Returns currently configured data source.
Definition of data source for terrain tiles (assuming "terrarium" data encoding with usual XYZ tiling...
QString uri
HTTP(S) template for XYZ tiles requests (e.g. http://example.com/{z}/{x}/{y}.png)