Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-20 10:57:05 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-23 10:25:11 +0300
commit6ab081563cc1c3365837a85e9e3bd723088fa9b3 (patch)
tree7b55773bfeb90a9b264568dfdc914d45189a11c0 /generator
parent18067c6270fa7edbc6b391468971d3aaa3a7df95 (diff)
Separation getting altitude information from mwm generation. Moving getting altitude info to an abstract class.
Diffstat (limited to 'generator')
-rw-r--r--generator/altitude_generator.cpp40
-rw-r--r--generator/altitude_generator.hpp12
2 files changed, 45 insertions, 7 deletions
diff --git a/generator/altitude_generator.cpp b/generator/altitude_generator.cpp
index 8200e1a8c3..3548d135d3 100644
--- a/generator/altitude_generator.cpp
+++ b/generator/altitude_generator.cpp
@@ -1,3 +1,4 @@
+#include "generator/altitude_generator.hpp"
#include "generator/routing_generator.hpp"
#include "generator/srtm_parser.hpp"
@@ -5,7 +6,6 @@
#include "indexer/altitude_loader.hpp"
#include "indexer/feature.hpp"
-#include "indexer/feature_altitude.hpp"
#include "indexer/feature_data.hpp"
#include "indexer/feature_processor.hpp"
@@ -37,15 +37,34 @@ using namespace feature;
namespace
{
+using namespace routing;
+
TAltitudeSectionVersion constexpr kAltitudeSectionVersion = 1;
+class SrtmGetter : public IAltitudeGetter
+{
+public:
+ SrtmGetter(string const & srtmPath) : m_srtmManager(srtmPath) {}
+
+ feature::TAltitude GetAltitude(ms::LatLon const & coord) override
+ {
+ return m_srtmManager.GetHeight(coord);
+ }
+
+private:
+ generator::SrtmTileManager m_srtmManager;
+};
+
class Processor
{
public:
using TFeatureAltitude = pair<uint32_t, Altitude>;
using TFeatureAltitudes = vector<TFeatureAltitude>;
- Processor(string const & srtmPath) : m_srtmManager(srtmPath), m_minAltitude(kInvalidAltitude) {}
+ Processor(IAltitudeGetter & altitudeGetter)
+ : m_altitudeGetter(altitudeGetter), m_minAltitude(kInvalidAltitude)
+ {
+ }
TFeatureAltitudes const & GetFeatureAltitudes() const { return m_featureAltitudes; }
@@ -77,7 +96,7 @@ public:
TAltitude minFeatureAltitude = kInvalidAltitude;
for (size_t i = 0; i < pointsCount; ++i)
{
- TAltitude const a = m_srtmManager.GetHeight(MercatorBounds::ToLatLon(f.GetPoint(i)));
+ TAltitude const a = m_altitudeGetter.GetAltitude(MercatorBounds::ToLatLon(f.GetPoint(i)));
if (a == kInvalidAltitude)
{
valid = false;
@@ -118,7 +137,7 @@ public:
}
private:
- generator::SrtmTileManager m_srtmManager;
+ IAltitudeGetter & m_altitudeGetter;
TFeatureAltitudes m_featureAltitudes;
vector<bool> m_altitudeAvailability;
TAltitude m_minAltitude;
@@ -163,15 +182,15 @@ void SerializeHeader(TAltitudeSectionVersion version, TAltitude minAltitude,
namespace routing
{
-void BuildRoadAltitudes(string const & srtmPath, string const & baseDir, string const & countryName)
+void BuildRoadAltitudes(IAltitudeGetter & altitudeGetter, string const & baseDir,
+ string const & countryName)
{
try
{
// Preparing altitude information.
- LOG(LINFO, ("srtmPath =", srtmPath, "baseDir =", baseDir, "countryName =", countryName));
string const mwmPath = my::JoinFoldersToPath(baseDir, countryName + DATA_FILE_EXTENSION);
- Processor processor(srtmPath);
+ Processor processor(altitudeGetter);
feature::ForEachFromDat(mwmPath, processor);
processor.SortFeatureAltitudes();
Processor::TFeatureAltitudes const & featureAltitudes = processor.GetFeatureAltitudes();
@@ -244,4 +263,11 @@ void BuildRoadAltitudes(string const & srtmPath, string const & baseDir, string
LOG(LERROR, ("An exception happend while creating", ALTITUDES_FILE_TAG, "section. ", e.what()));
}
}
+
+void BuildRoadAltitudes(string const & srtmPath, string const & baseDir, string const & countryName)
+{
+ LOG(LINFO, ("srtmPath =", srtmPath, "baseDir =", baseDir, "countryName =", countryName));
+ SrtmGetter srtmGetter(srtmPath);
+ BuildRoadAltitudes(srtmGetter, baseDir, countryName);
+}
} // namespace routing
diff --git a/generator/altitude_generator.hpp b/generator/altitude_generator.hpp
index 0133d401cb..5f8e76a377 100644
--- a/generator/altitude_generator.hpp
+++ b/generator/altitude_generator.hpp
@@ -1,9 +1,21 @@
#pragma once
+#include "geometry/latlon.hpp"
+
+#include "indexer/feature_altitude.hpp"
+
#include "std/string.hpp"
namespace routing
{
+class IAltitudeGetter
+{
+public:
+ virtual feature::TAltitude GetAltitude(ms::LatLon const & coord) = 0;
+};
+
+void BuildRoadAltitudes(IAltitudeGetter const & altitudeGetter, string const & baseDir,
+ string const & countryName);
void BuildRoadAltitudes(string const & srtmPath, string const & baseDir,
string const & countryName);
} // namespace routing