Fixed reading SRTM from squashfs

This commit is contained in:
Alexander Borsuk
2021-08-26 19:53:27 +02:00
committed by zyphlar
parent aab883171d
commit 032183414b
2 changed files with 9 additions and 8 deletions

View File

@@ -90,7 +90,7 @@ void SrtmTile::Init(std::string const & dir, ms::LatLon const & coord)
} }
else else
{ {
GetPlatform().GetReader(file)->ReadAsString(m_data); FileReader(base::JoinPath(dir, file)).ReadAsString(m_data);
} }
if (m_data.size() != kSrtmTileSize) if (m_data.size() != kSrtmTileSize)

View File

@@ -240,7 +240,7 @@ class TileIsolinesTask
public: public:
TileIsolinesTask(int left, int bottom, int right, int top, std::string const & srtmDir, TileIsolinesTask(int left, int bottom, int right, int top, std::string const & srtmDir,
TileIsolinesParams const * params, bool forceRegenerate) TileIsolinesParams const * params, bool forceRegenerate)
: m_strmDir(srtmDir) : m_srtmDir(srtmDir)
, m_srtmProvider(srtmDir) , m_srtmProvider(srtmDir)
, m_params(params) , m_params(params)
, m_forceRegenerate(forceRegenerate) , m_forceRegenerate(forceRegenerate)
@@ -251,7 +251,7 @@ public:
TileIsolinesTask(int left, int bottom, int right, int top, std::string const & srtmDir, TileIsolinesTask(int left, int bottom, int right, int top, std::string const & srtmDir,
TileIsolinesProfileParams const * profileParams, bool forceRegenerate) TileIsolinesProfileParams const * profileParams, bool forceRegenerate)
: m_strmDir(srtmDir) : m_srtmDir(srtmDir)
, m_srtmProvider(srtmDir) , m_srtmProvider(srtmDir)
, m_profileParams(profileParams) , m_profileParams(profileParams)
, m_forceRegenerate(forceRegenerate) , m_forceRegenerate(forceRegenerate)
@@ -296,8 +296,9 @@ private:
return; return;
} }
} }
auto const & pl = GetPlatform();
if (!GetPlatform().IsFileExistsByFullPath(generator::SrtmTile::GetPath(m_strmDir, tileName))) if (!pl.IsFileExistsByFullPath(base::JoinPath(m_srtmDir, tileName + ".hgt"))
&& !pl.IsFileExistsByFullPath(generator::SrtmTile::GetPath(m_srtmDir, tileName)))
{ {
LOG(LINFO, ("SRTM tile", tileName, "doesn't exist, skip processing.")); LOG(LINFO, ("SRTM tile", tileName, "doesn't exist, skip processing."));
return; return;
@@ -413,7 +414,7 @@ private:
int m_bottom; int m_bottom;
int m_right; int m_right;
int m_top; int m_top;
std::string m_strmDir; std::string m_srtmDir;
SrtmProvider m_srtmProvider; SrtmProvider m_srtmProvider;
TileIsolinesParams const * m_params = nullptr; TileIsolinesParams const * m_params = nullptr;
TileIsolinesProfileParams const * m_profileParams = nullptr; TileIsolinesProfileParams const * m_profileParams = nullptr;
@@ -435,14 +436,14 @@ void RunGenerateIsolinesTasks(int left, int bottom, int right, int top,
int tilesRowPerTask = top - bottom; int tilesRowPerTask = top - bottom;
int tilesColPerTask = right - left; int tilesColPerTask = right - left;
if (tilesRowPerTask * tilesColPerTask <= threadsCount) if (tilesRowPerTask * tilesColPerTask <= static_cast<long>(threadsCount))
{ {
tilesRowPerTask = 1; tilesRowPerTask = 1;
tilesColPerTask = 1; tilesColPerTask = 1;
} }
else else
{ {
while (tilesRowPerTask * tilesColPerTask > maxCachedTilesPerThread) while (tilesRowPerTask * tilesColPerTask > static_cast<long>(maxCachedTilesPerThread))
{ {
if (tilesRowPerTask > tilesColPerTask) if (tilesRowPerTask > tilesColPerTask)
tilesRowPerTask = (tilesRowPerTask + 1) / 2; tilesRowPerTask = (tilesRowPerTask + 1) / 2;