QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
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  typedef struct
63  {
64  QString uri;
65  int zMin = 0;
66  int zMax = 0;
67  } DataSource;
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
QgsCoordinateTransformContext
Contains information about the context in which a coordinate transform is executed.
Definition: qgscoordinatetransformcontext.h:58
qgscoordinatetransformcontext.h
QgsTerrainDownloader
3 Takes care of downloading terrain data from a publicly available data source.
Definition: qgsterraindownloader.h:49
QgsRectangle
A rectangle specified with double values.
Definition: qgsrectangle.h:42
QgsTerrainDownloader::DataSource::uri
QString uri
HTTP(S) template for XYZ tiles requests (e.g. http://example.com/{z}/{x}/{y}.png)
Definition: qgsterraindownloader.h:64
QgsTerrainDownloader::dataSource
DataSource dataSource() const
Returns currently configured data source.
Definition: qgsterraindownloader.h:76
QgsRasterLayer
Represents a raster layer.
Definition: qgsrasterlayer.h:71
QgsCoordinateReferenceSystem
This class represents a coordinate reference system (CRS).
Definition: qgscoordinatereferencesystem.h:206
QgsTerrainDownloader::DataSource
Definition of data source for terrain tiles (assuming "terrarium" data encoding with usual XYZ tiling...
Definition: qgsterraindownloader.h:63
QgsTerrainDownloader::~QgsTerrainDownloader
~QgsTerrainDownloader()