From b6922be52642a46524fd0dd5e55bb7b989e638ef Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Wed, 1 Apr 2015 16:50:48 +0300 Subject: [PATCH] MapsMePlugin fixes --- 3party/osrm/osrm-backend/CMakeLists.txt | 45 ++++++++++--------- .../osrm/osrm-backend/Library/OSRM_impl.cpp | 2 +- .../osrm/osrm-backend/Plugins/MapsMePlugin.h | 44 ++++++------------ .../osrm/osrm-backend/Util/ProgramOptions.h | 2 + 4 files changed, 40 insertions(+), 53 deletions(-) diff --git a/3party/osrm/osrm-backend/CMakeLists.txt b/3party/osrm/osrm-backend/CMakeLists.txt index a626911bc9..49af1e6f77 100644 --- a/3party/osrm/osrm-backend/CMakeLists.txt +++ b/3party/osrm/osrm-backend/CMakeLists.txt @@ -10,6 +10,9 @@ project(OSRM) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) include(CheckCXXCompilerFlag) include(FindPackageHandleStandardArgs) +set(OMIM_STORAGE_PATH "../../../storage/") +set(OMIM_DEBUG_PATH "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug") +set(OMIM_RELEASE_PATH "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release") set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) @@ -73,7 +76,7 @@ file(GLOB LibOSRMGlob Library/*.cpp) file(GLOB MapsMeSources mapsme/*.cpp) file(GLOB MapsMeHeaders mapsme/*.h) -file(GLOB MapsMeGenerator ../../../storage/country.cpp ../../../storage/country_decl.cpp ../../../storage/country_info.cpp) +file(GLOB MapsMeGenerator "${OMIM_STORAGE_PATH}/country.cpp" "${OMIM_STORAGE_PATH}/country_decl.cpp" "${OMIM_STORAGE_PATH}/country_info.cpp") set( OSRMSources @@ -189,29 +192,29 @@ target_link_libraries(OSRM ${Boost_LIBRARIES}) target_link_libraries(osrm-extract ${Boost_LIBRARIES}) target_link_libraries(osrm-prepare ${Boost_LIBRARIES}) target_link_libraries(osrm-routed ${Boost_LIBRARIES} ${OPTIONAL_SOCKET_LIBS} OSRM - debug "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libcoding.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libbase.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libgeometry.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libindexer.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libjansson.a" - general "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libcoding.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libgeometry.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libindexer.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libjansson.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libbase.a") + debug "${OMIM_DEBUG_PATH}/libcoding.a" + "${OMIM_DEBUG_PATH}/libbase.a" + "${OMIM_DEBUG_PATH}/libgeometry.a" + "${OMIM_DEBUG_PATH}/libindexer.a" + "${OMIM_DEBUG_PATH}/libjansson.a" + general "${OMIM_RELEASE_PATH}/libcoding.a" + "${OMIM_RELEASE_PATH}/libgeometry.a" + "${OMIM_RELEASE_PATH}/libindexer.a" + "${OMIM_RELEASE_PATH}/libjansson.a" + "${OMIM_RELEASE_PATH}/libbase.a") target_link_libraries(osrm-datastore ${Boost_LIBRARIES}) target_link_libraries(osrm-mapsme ${Boost_LIBRARIES} OSRM - debug "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libcoding.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libbase.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/librouting.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libindexer.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-debug/out/debug/libgeometry.a" - general "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libcoding.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libbase.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/librouting.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libindexer.a" - "${CMAKE_SOURCE_DIR}/../../../../omim-build-release/out/release/libgeometry.a") + debug "${OMIM_DEBUG_PATH}/libcoding.a" + "${OMIM_DEBUG_PATH}/libbase.a" + "${OMIM_DEBUG_PATH}/librouting.a" + "${OMIM_DEBUG_PATH}/libgeometry.a" + "${OMIM_DEBUG_PATH}/libindexer.a" + general "${OMIM_RELEASE_PATH}/libcoding.a" + "${OMIM_RELEASE_PATH}/libbase.a" + "${OMIM_RELEASE_PATH}/librouting.a" + "${OMIM_RELEASE_PATH}/libgeometry.a" + "${OMIM_RELEASE_PATH}/libindexer.a") find_package(Threads REQUIRED) target_link_libraries(osrm-extract ${CMAKE_THREAD_LIBS_INIT} ${OPTIONAL_OMP_LIB}) diff --git a/3party/osrm/osrm-backend/Library/OSRM_impl.cpp b/3party/osrm/osrm-backend/Library/OSRM_impl.cpp index 45c2a2cae1..4d194c065d 100644 --- a/3party/osrm/osrm-backend/Library/OSRM_impl.cpp +++ b/3party/osrm/osrm-backend/Library/OSRM_impl.cpp @@ -81,7 +81,7 @@ OSRM_impl::OSRM_impl(ServerPaths server_paths, const bool use_shared_memory) RegisterPlugin(new TimestampPlugin>(query_data_facade)); RegisterPlugin(new ViaRoutePlugin>(query_data_facade)); RegisterPlugin(new MapsMePlugin>( - query_data_facade, server_paths["borders"].string(), server_paths["hsgrdata"].string())); + query_data_facade, server_paths["borders"].string(), server_paths["enodesdata"].string())); } OSRM_impl::~OSRM_impl() diff --git a/3party/osrm/osrm-backend/Plugins/MapsMePlugin.h b/3party/osrm/osrm-backend/Plugins/MapsMePlugin.h index 3e147f5b7b..78ac4a6f2d 100644 --- a/3party/osrm/osrm-backend/Plugins/MapsMePlugin.h +++ b/3party/osrm/osrm-backend/Plugins/MapsMePlugin.h @@ -49,26 +49,22 @@ template class MapsMePlugin final : public BasePlugin { auto it = find_if(m_regions[id].begin(), m_regions[id].end(), [&](m2::RegionD const ®ion) - { - if (region.Contains(m_pt)) - { - m_res = id; - return true; - } - }); - return it == m_regions[id].end(); + { return region.Contains(m_pt);}); + if (it == m_regions[id].end()) + return true; + m_res = id; + return false; } }; public: - explicit MapsMePlugin(DataFacadeT *facade, std::string const &baseDir, std::string const & osrmFile) + explicit MapsMePlugin(DataFacadeT *facade, std::string const &baseDir, std::string const & nodeDataFile) : m_descriptorString("mapsme"), m_facade(facade), m_reader(baseDir + '/' + PACKED_POLYGONS_FILE) { - - if (!osrm::LoadNodeDataFromFile(osrmFile.substr(osrmFile.begin(),osrmFile.length()-5) + ".nodeData", m_nodeData)) + if (!osrm::LoadNodeDataFromFile(nodeDataFile, m_nodeData)) { - LOG(LCRITICAL, ("Can't load node data")); + SimpleLogger().Write(logDEBUG) << "Can't load node data"; return; } ReaderSource src(m_reader.GetReader(PACKED_POLYGONS_INFO_TAG)); @@ -76,8 +72,6 @@ template class MapsMePlugin final : public BasePlugin m_regions.resize(m_countries.size()); for (size_t i = 0; i < m_countries.size(); ++i) { - std::vector &rgnV = m_regions[i]; - // load regions from file ReaderSource src(m_reader.GetReader(strings::to_string(i))); @@ -87,8 +81,7 @@ template class MapsMePlugin final : public BasePlugin vector points; serial::LoadOuterPath(src, serial::CodingParams(), points); - rgnV.push_back(m2::RegionD()); - rgnV.back().Assign(points.begin(), points.end()); + m_regions[i].emplace_back(move(m2::RegionD(points.begin(), points.end()))); } } m_searchEngine = osrm::make_unique>(facade); @@ -138,15 +131,6 @@ template class MapsMePlugin final : public BasePlugin for (unsigned i = 0; i < raw_route.raw_via_node_coordinates.size(); ++i) { - if (checksum_OK && i < route_parameters.hints.size() && - !route_parameters.hints[i].empty()) - { - ObjectEncoder::DecodeFromBase64(route_parameters.hints[i], phantom_node_vector[i]); - if (phantom_node_vector[i].isValid(m_facade->GetNumberOfNodes())) - { - continue; - } - } m_facade->FindPhantomNodeForCoordinate(raw_route.raw_via_node_coordinates[i], phantom_node_vector[i], route_parameters.zoom_level); @@ -178,12 +162,10 @@ template class MapsMePlugin final : public BasePlugin { PathData const &path_data = raw_route.unpacked_path_segments[i][j]; auto const & data = m_nodeData[path_data.node]; - auto const & startSeg = data.m_segments.front(); - FixedPointCoordinate const coord = m_facade->GetCoordinateOfNode(path_data.node); - storage::CountryInfo info; - LOG(LINFO, ("COORD ",startSeg.lat1, startSeg.lon1)); - m2::PointD pt = - MercatorBounds::FromLatLon(startSeg.lat1, startSeg.lon1); + if (data.m_segments.empty()) + continue; + auto const & seg = data.m_segments.front(); + m2::PointD pt = MercatorBounds::FromLatLon(seg.lat1, seg.lon1); GetByPoint doGet(m_regions, pt); ForEachCountry(pt, doGet); diff --git a/3party/osrm/osrm-backend/Util/ProgramOptions.h b/3party/osrm/osrm-backend/Util/ProgramOptions.h index 4023f32229..47f69376a0 100644 --- a/3party/osrm/osrm-backend/Util/ProgramOptions.h +++ b/3party/osrm/osrm-backend/Util/ProgramOptions.h @@ -60,6 +60,8 @@ inline void populate_base_path(ServerPaths &server_paths) BOOST_ASSERT(server_paths.find("hsgrdata") != server_paths.end()); server_paths["nodesdata"] = base_string + ".nodes"; BOOST_ASSERT(server_paths.find("nodesdata") != server_paths.end()); + server_paths["enodesdata"] = base_string + ".nodeData"; + BOOST_ASSERT(server_paths.find("nodesdata") != server_paths.end()); server_paths["edgesdata"] = base_string + ".edges"; BOOST_ASSERT(server_paths.find("edgesdata") != server_paths.end()); server_paths["geometries"] = base_string + ".geometry";