1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-01-18 03:42:09 +01:00

Code cleanup

This commit is contained in:
Martin Tůma 2025-01-17 07:38:31 +01:00
parent f1b52c7005
commit 335df85fae
3 changed files with 19 additions and 11 deletions

View File

@ -111,3 +111,13 @@ double DEMTree::elevation(const Coordinates &c) const
return ele; return ele;
} }
MatrixD DEMTree::elevation(const MatrixC &m) const
{
MatrixD ret(m.h(), m.w());
for (int i = 0; i < m.size(); i++)
ret.at(i) = elevation(m.at(i));
return ret;
}

View File

@ -2,6 +2,7 @@
#define IMG_DEMTREE_H #define IMG_DEMTREE_H
#include "common/rtree.h" #include "common/rtree.h"
#include "map/matrix.h"
#include "mapdata.h" #include "mapdata.h"
namespace IMG { namespace IMG {
@ -11,6 +12,7 @@ public:
DEMTree(const QList<MapData::Elevation> &tiles); DEMTree(const QList<MapData::Elevation> &tiles);
double elevation(const Coordinates &c) const; double elevation(const Coordinates &c) const;
MatrixD elevation(const MatrixC &m) const;
private: private:
typedef RTree<const MapData::Elevation*, double, 2> Tree; typedef RTree<const MapData::Elevation*, double, 2> Tree;

View File

@ -483,22 +483,18 @@ MatrixD RasterTile::elevation(int extend) const
if (_data->hasDEM()) { if (_data->hasDEM()) {
RectC rect; RectC rect;
QList<MapData::Elevation> tiles;
for (int i = 0; i < ll.size(); i++) for (int i = 0; i < ll.size(); i++)
rect = rect.united(ll.at(i)); rect = rect.united(ll.at(i));
// Extra margin for always including the next DEM tile on the map tile /* Extra margin for always including the next DEM tile on the map tile
// edges (the DEM tile resolution is usally 0.5-15% of the map tile) edges (the DEM tile resolution is usally 0.5-15% of the map tile) */
double factor = 6 - (_zoom - 24) * 1.7; double factor = 6 - (_zoom - 24) * 1.7;
_data->elevations(_file, rect.adjusted(0, 0, rect.width() / factor, RectC br(rect.adjusted(0, 0, rect.width() / factor, -rect.height()
-rect.height() / factor), _zoom, &tiles); / factor));
DEMTree tree(tiles); QList<MapData::Elevation> tiles;
MatrixD m(ll.h(), ll.w()); _data->elevations(_file, br, _zoom, &tiles);
for (int i = 0; i < ll.size(); i++)
m.at(i) = tree.elevation(ll.at(i));
return m; return DEMTree(tiles).elevation(ll);
} else } else
return DEM::elevation(ll); return DEM::elevation(ll);
} }