From 3935a97d4cf25c541f168b95028e65931027b6e8 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Fri, 19 Aug 2011 13:44:15 +0300 Subject: [PATCH] [generator_tool] Set sort_features flag by default Minor cleanup of commented code --- generator/feature_sorter.cpp | 6 +- generator/feature_sorter.hpp | 13 +- generator/generator_tool/generator_tool.cpp | 4 +- generator/osm_element.hpp | 137 -------------------- 4 files changed, 5 insertions(+), 155 deletions(-) diff --git a/generator/feature_sorter.cpp b/generator/feature_sorter.cpp index 78dfef98e8..81d650bdbf 100644 --- a/generator/feature_sorter.cpp +++ b/generator/feature_sorter.cpp @@ -396,8 +396,7 @@ namespace feature return static_cast(fb); } - - bool GenerateFinalFeatures(string const & datFilePath, bool bSort, bool bWorld) + bool GenerateFinalFeatures(string const & datFilePath, bool bWorld) { // rename input file Platform & platform = GetPlatform(); @@ -416,8 +415,7 @@ namespace feature ForEachFromDatRawFormat(tempDatFilePath, midPoints); // sort features by their middle point - if (bSort) - std::sort(midPoints.m_vec.begin(), midPoints.m_vec.end(), &SortMidPointsFunc); + std::sort(midPoints.m_vec.begin(), midPoints.m_vec.end(), &SortMidPointsFunc); // store sorted features { diff --git a/generator/feature_sorter.hpp b/generator/feature_sorter.hpp index 088ab27574..f64d55f612 100644 --- a/generator/feature_sorter.hpp +++ b/generator/feature_sorter.hpp @@ -11,9 +11,8 @@ namespace feature { - /// Final generation of data from input feature-dat-file. - /// @param[in] bSort sorts features in the given file by their mid points - bool GenerateFinalFeatures(string const & datFile, bool bSort, bool bWorld); + /// Final generation of data from input feature-dat-file + bool GenerateFinalFeatures(string const & datFile, bool bWorld); template inline bool are_points_equal(PointT const & p1, PointT const & p2) @@ -41,14 +40,6 @@ namespace feature CHECK_GREATER ( out.size(), 1, () ); CHECK ( are_points_equal(in.front(), out.front()), () ); CHECK ( are_points_equal(in.back(), out.back()), () ); - -#ifdef DEBUG - //for (size_t i = 2; i < out.size(); ++i) - //{ - // double const dist = DistanceF(out[i-2], out[i])(out[i-1]); - // CHECK ( dist >= eps, (dist, eps, in) ); - //} -#endif } } } diff --git a/generator/generator_tool/generator_tool.cpp b/generator/generator_tool/generator_tool.cpp index 244e6fa93e..9e2a922876 100644 --- a/generator/generator_tool/generator_tool.cpp +++ b/generator/generator_tool/generator_tool.cpp @@ -34,8 +34,6 @@ DEFINE_bool(version, false, "Display version"); DEFINE_bool(generate_update, false, "If specified, update.maps file will be generated from cells in the data path"); - -DEFINE_bool(sort_features, true, "Sort features data for better cache-friendliness."); DEFINE_bool(generate_classif, false, "Generate classificator."); DEFINE_bool(preprocess_xml, false, "1st pass - create nodes/ways/relations data"); DEFINE_bool(generate_features, false, "2nd pass - generate intermediate features"); @@ -170,7 +168,7 @@ int main(int argc, char ** argv) { LOG(LINFO, ("Generating result features for ", datFile)); if (!feature::GenerateFinalFeatures(datFile, - FLAGS_sort_features, datFile == path + WORLD_FILE_NAME + DATA_FILE_EXTENSION)) + datFile == path + WORLD_FILE_NAME + DATA_FILE_EXTENSION)) { // If error - move to next bucket without index generation continue; diff --git a/generator/osm_element.hpp b/generator/osm_element.hpp index 20cd7e71bc..11046006fb 100644 --- a/generator/osm_element.hpp +++ b/generator/osm_element.hpp @@ -16,9 +16,6 @@ #include "../std/set.hpp" #include "../std/vector.hpp" -#include "../base/start_mem_debug.hpp" - - /// @param TEmitter Feature accumulating policy /// @param THolder Nodes, ways, relations holder template @@ -301,128 +298,6 @@ protected: } }; -/* -template -class SecondPassParserJoin : public SecondPassParserBase -{ - typedef SecondPassParserBase base_type; - - set m_usedDirect; - - bool TryEmitUnited(uint64_t featureID, typename base_type::feature_builder_t & ft) - { - // check, if feature already processed early - if (m_usedDirect.count(featureID) > 0) - return true; - - set path; - path.insert(featureID); - - WayElement e; - - // process geometry of initial way itself - base_type::m_holder.GetWay(featureID, e); - if (e.nodes.empty()) - return false; - - for (size_t i = 0; i < e.nodes.size(); ++i) - { - m2::PointD pt; - if (base_type::GetPoint(e.nodes[i], pt)) - ft.AddPoint(pt); - else - return false; - } - - // process connected ways in cycle while ... - uint64_t fID = featureID; - while (!ft.IsGeometryClosed()) - { - uint64_t const nodeID = e.nodes.back(); - if (!base_type::m_holder.GetNextWay(fID, nodeID, e)) - break; - - if (!path.insert(fID).second) - { - LOG_SHORT(LWARNING, ("JOIN_DBG! Cycle found during way joining, duplicate id = ", fID)); - break; - } - - // skip first point, because it's equal with previous - size_t i; - int inc; - if (e.nodes.front() == nodeID) - { - i = 1; - inc = 1; - } - else - { - ASSERT ( e.nodes.back() == nodeID, () ); - - i = e.nodes.size() - 2; - inc = -1; - } - - size_t count = 1; - while (count++ < e.nodes.size()) - { - m2::PointD pt; - if (base_type::GetPoint(e.nodes[i], pt)) - ft.AddPoint(pt); - else - return false; - - i += inc; - } - } - - if (ft.IsGeometryClosed()) - { - m_usedDirect.insert(path.begin(), path.end()); - - base_type::FinishAreaFeature(featureID, ft); - - base_type::m_emitter(ft); - return true; - } - else - { - LOG_SHORT(LWARNING, ("JOIN_DBG! Ways not connected for root way = ", featureID)); - return false; - } - } - -protected: - virtual void EmitElement(XMLElement * p) - { - uint64_t id; - FeatureParams fValue; - if (!ParseType(p, id, fValue)) - return; - - // check, if we can make united feature - for (typename FeatureParams::types_t::iterator i = fValue.types.begin(); i != fValue.types.end(); ++i) - if (feature::NeedUnite(*i)) - { - typename base_type::feature_builder_t ft; - ft.AddName(fValue.name); - ft.AddTypes(fValue.types.begin(), fValue.types.end()); - ft.AddLayer(fValue.layer); - - TryEmitUnited(id, ft); - break; - } - } - -public: - SecondPassParserJoin(TEmitter & emitter, THolder & holder) - : base_type(emitter, holder) - { - } -}; -*/ - template class SecondPassParserUsual : public SecondPassParserBase { @@ -459,11 +334,6 @@ protected: } else if (p->name == "way") { -//#ifdef DEBUG -// if (id == 41082185 || id == 64452462 || id == 48922414) -// __debugbreak(); -//#endif - bool const isLine = feature::IsDrawableLike(fValue.m_Types, feature::FEATURE_TYPE_LINE); bool const isArea = feature::IsDrawableLike(fValue.m_Types, feature::FEATURE_TYPE_AREA); @@ -501,11 +371,6 @@ protected: } else if (p->name == "relation") { -//#ifdef DEBUG -// if (id == 254789) -// __debugbreak(); -//#endif - if (!feature::IsDrawableLike(fValue.m_Types, feature::FEATURE_TYPE_AREA)) return; @@ -577,5 +442,3 @@ public: { } }; - -#include "../../base/stop_mem_debug.hpp"