QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
ElevationMapProvider.cpp
Go to the documentation of this file.
2#include "QGCTileSet.h"
4
5#include <QtCore/QDir>
6#include <QtCore/QTemporaryFile>
7
8int CopernicusElevationProvider::long2tileX(double lon, int z) const
9{
10 Q_UNUSED(z)
11 return static_cast<int>(floor((lon + 180.0) / TerrainTileCopernicus::kTileSizeDegrees));
12}
13
14int CopernicusElevationProvider::lat2tileY(double lat, int z) const
15{
16 Q_UNUSED(z)
17 return static_cast<int>(floor((lat + 90.0) / TerrainTileCopernicus::kTileSizeDegrees));
18}
19
20QString CopernicusElevationProvider::_getURL(int x, int y, int zoom) const
21{
22 Q_UNUSED(zoom)
23 const double lat1 = (static_cast<double>(y) * TerrainTileCopernicus::kTileSizeDegrees) - 90.0;
24 const double lon1 = (static_cast<double>(x) * TerrainTileCopernicus::kTileSizeDegrees) - 180.0;
25 const double lat2 = (static_cast<double>(y + 1) * TerrainTileCopernicus::kTileSizeDegrees) - 90.0;
26 const double lon2 = (static_cast<double>(x + 1) * TerrainTileCopernicus::kTileSizeDegrees) - 180.0;
27 const QString url = _mapUrl.arg(lat1).arg(lon1).arg(lat2).arg(lon2);
28 return url;
29}
30
32 double topleftLat, double bottomRightLon,
33 double bottomRightLat) const
34{
35 QGCTileSet set;
36 set.tileX0 = long2tileX(topleftLon, zoom);
37 set.tileY0 = lat2tileY(bottomRightLat, zoom);
38 set.tileX1 = long2tileX(bottomRightLon, zoom);
39 set.tileY1 = lat2tileY(topleftLat, zoom);
40
41 set.tileCount = (static_cast<quint64>(set.tileX1) -
42 static_cast<quint64>(set.tileX0) + 1) *
43 (static_cast<quint64>(set.tileY1) -
44 static_cast<quint64>(set.tileY0) + 1);
45
46 set.tileSize = getAverageSize() * set.tileCount;
47
48 return set;
49}
50
51QByteArray CopernicusElevationProvider::serialize(const QByteArray &image) const
52{
54}
int lat2tileY(double lat, int z) const final
int long2tileX(double lon, int z) const final
QByteArray serialize(const QByteArray &image) const final
QGCTileSet getTileCount(int zoom, double topleftLon, double topleftLat, double bottomRightLon, double bottomRightLat) const final
quint32 getAverageSize() const
Definition MapProvider.h:43
static QByteArray serializeFromData(const QByteArray &input)
static constexpr double kTileSizeDegrees
Each terrain tile represents a square area .01 degrees in lat/lon.
quint64 tileCount
Definition QGCTileSet.h:29
quint64 tileSize
Definition QGCTileSet.h:30