diff --git a/indexer/altitude_loader.cpp b/indexer/altitude_loader.cpp index a794c96537..cb05bc4cf6 100644 --- a/indexer/altitude_loader.cpp +++ b/indexer/altitude_loader.cpp @@ -31,6 +31,8 @@ namespace feature { AltitudeLoader::AltitudeLoader(MwmValue const & mwmValue) { + m_countryFileName = mwmValue.GetCountryFileName(); + if (mwmValue.GetHeader().GetFormat() < version::Format::v8) return; @@ -50,7 +52,7 @@ AltitudeLoader::AltitudeLoader(MwmValue const & mwmValue) catch (Reader::OpenException const & e) { m_header.Reset(); - LOG(LERROR, ("Error while reading", ALTITUDES_FILE_TAG, "section.", e.Msg())); + LOG(LERROR, ("File", m_countryFileName, "Error while reading", ALTITUDES_FILE_TAG, "section.", e.Msg())); } } @@ -73,31 +75,34 @@ TAltitudes const & AltitudeLoader::GetAltitudes(uint32_t featureId, size_t point if (!m_altitudeAvailability[featureId]) { - LOG(LINFO, ("Feature featureId =", featureId, "does not contain any altitude information.")); + LOG(LDEBUG, ("Feature Id", featureId, "of", m_countryFileName, + "does not contain any altitude information.")); return m_cache.insert(make_pair(featureId, TAltitudes(pointCount, m_header.m_minAltitude))).first->second; } uint64_t const r = m_altitudeAvailability.rank(featureId); - CHECK_LESS(r, m_altitudeAvailability.size(), (featureId)); + CHECK_LESS(r, m_altitudeAvailability.size(), ("Feature Id", featureId, "of", m_countryFileName)); uint64_t const offset = m_featureTable.select(r); - CHECK_LESS_OR_EQUAL(offset, m_featureTable.size(), (featureId)); + CHECK_LESS_OR_EQUAL(offset, m_featureTable.size(), ("Feature Id", featureId, "of", m_countryFileName)); uint64_t const altitudeInfoOffsetInSection = m_header.m_altitudesOffset + offset; - CHECK_LESS(altitudeInfoOffsetInSection, m_reader->Size(), ()); + CHECK_LESS(altitudeInfoOffsetInSection, m_reader->Size(), ("Feature Id", featureId, "of", m_countryFileName)); try { Altitudes altitudes; ReaderSource src(*m_reader); src.Skip(altitudeInfoOffsetInSection); - bool const isDeserialized = altitudes.Deserialize(m_header.m_minAltitude, pointCount, src); + bool const isDeserialized = altitudes.Deserialize(m_header.m_minAltitude, pointCount, + m_countryFileName, featureId, src); bool const allValid = isDeserialized && none_of(altitudes.m_altitudes.begin(), altitudes.m_altitudes.end(), [](TAltitude a) { return a == kInvalidAltitude; }); if (!allValid) { - ASSERT(false, (altitudes.m_altitudes)); + LOG(LERROR, ("Only a part point of a feature has a valid altitdue. Altitudes: ", altitudes.m_altitudes, + ". Feature Id", featureId, "of", m_countryFileName)); return m_cache.insert(make_pair(featureId, TAltitudes(pointCount, m_header.m_minAltitude))).first->second; } @@ -105,7 +110,7 @@ TAltitudes const & AltitudeLoader::GetAltitudes(uint32_t featureId, size_t point } catch (Reader::OpenException const & e) { - LOG(LERROR, ("Error while getting altitude data", e.Msg())); + LOG(LERROR, ("Feature Id", featureId, "of", m_countryFileName, ". Error while getting altitude data:", e.Msg())); return m_cache.insert(make_pair(featureId, TAltitudes(pointCount, m_header.m_minAltitude))).first->second; } } diff --git a/indexer/altitude_loader.hpp b/indexer/altitude_loader.hpp index ff76fd9ba9..0586fa2d33 100644 --- a/indexer/altitude_loader.hpp +++ b/indexer/altitude_loader.hpp @@ -4,6 +4,7 @@ #include "coding/memory_region.hpp" +#include "std/string.hpp" #include "std/unique_ptr.hpp" #include "std/vector.hpp" @@ -32,5 +33,6 @@ private: unique_ptr m_reader; map m_cache; AltitudeHeader m_header; + string m_countryFileName; }; } // namespace feature diff --git a/indexer/feature_altitude.hpp b/indexer/feature_altitude.hpp index 8d4071e231..41f1f3a7da 100644 --- a/indexer/feature_altitude.hpp +++ b/indexer/feature_altitude.hpp @@ -100,7 +100,8 @@ public: } template - bool Deserialize(TAltitude minAltitude, size_t pointCount, TSource & src) + bool Deserialize(TAltitude minAltitude, size_t pointCount, string const & countryFileName, + uint32_t featureId, TSource & src) { ASSERT_NOT_EQUAL(pointCount, 0, ()); @@ -113,7 +114,8 @@ public: uint32_t const biasedDelta = coding::DeltaCoder::Decode(bits); if (biasedDelta == 0) { - ASSERT(false, ("Decoded altitude delta is zero. Point number in its feature is", i)); + LOG(LERROR, ("Decoded altitude delta is zero. File", countryFileName, + ". Feature Id", featureId, ". Point number in the feature", i, ".")); m_altitudes.clear(); return false; } @@ -122,8 +124,9 @@ public: m_altitudes[i] = static_cast(bits::ZigZagDecode(delta) + prevAltitude); if (m_altitudes[i] < minAltitude) { - ASSERT(false, ("A point altitude read from file(", m_altitudes[i], - ") is less than min mwm altitude(", minAltitude, "). Point number in its feature is", i)); + LOG(LERROR, ("A point altitude read from file(", m_altitudes[i], + ") is less than min mwm altitude(", minAltitude, "). File ", + countryFileName, ". Feature Id", featureId, ". Point number in the feature", i, ".")); m_altitudes.clear(); return false; }