Guest User

Untitled

a guest
Apr 21st, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. #include "osrm/match_parameters.hpp"
  2. #include "osrm/nearest_parameters.hpp"
  3. #include "osrm/route_parameters.hpp"
  4. #include "osrm/table_parameters.hpp"
  5. #include "osrm/trip_parameters.hpp"
  6.  
  7. #include "osrm/coordinate.hpp"
  8. #include "osrm/engine_config.hpp"
  9. #include "osrm/json_container.hpp"
  10.  
  11. #include "osrm/osrm.hpp"
  12. #include "osrm/status.hpp"
  13.  
  14. #include <exception>
  15. #include <iostream>
  16. #include <string>
  17. #include <utility>
  18.  
  19. #include <cstdlib>
  20.  
  21. int main(int argc, const char *argv[])
  22. {
  23. if (argc < 2)
  24. {
  25. std::cerr << "Usage: " << argv[0] << " data.osrmn";
  26. return EXIT_FAILURE;
  27. }
  28.  
  29. using namespace osrm;
  30.  
  31. // Configure based on a .osrm base path, and no datasets in shared mem from osrm-datastore
  32. EngineConfig config;
  33.  
  34. config.storage_config = {argv[1]};
  35. config.use_shared_memory = false;
  36.  
  37. // We support two routing speed up techniques:
  38. // - Contraction Hierarchies (CH): requires extract+contract pre-processing
  39. // - Multi-Level Dijkstra (MLD): requires extract+partition+customize pre-processing
  40. //
  41. // config.algorithm = EngineConfig::Algorithm::CH;
  42. config.algorithm = EngineConfig::Algorithm::MLD;
  43.  
  44. // Routing machine with several services (such as Route, Table, Nearest, Trip, Match)
  45. const OSRM osrm{config};
  46.  
  47. // The following shows how to use the Route service; configure this service
  48. RouteParameters params;
  49.  
  50. // Route in monaco 13.388860,52.517037;13.385983,52.496891
  51. params.coordinates.push_back({util::FloatLongitude{13.385983}, util::FloatLatitude{52.496891}});
  52. params.coordinates.push_back({util::FloatLongitude{13.388860}, util::FloatLatitude{52.517037}});
  53.  
  54. // Response is in JSON format
  55. json::Object result;
  56.  
  57. // Execute routing request, this does the heavy lifting
  58.  
  59. // for loop execution
  60. for( int a = 0; a < 20000; a = a + 1 ) {
  61.  
  62.  
  63. const auto status = osrm.Route(params, result);
  64.  
  65. if (status == Status::Ok)
  66. {
  67. auto &routes = result.values["routes"].get<json::Array>();
  68.  
  69. // Let's just use the first route
  70. auto &route = routes.values.at(0).get<json::Object>();
  71. const auto distance = route.values["distance"].get<json::Number>().value;
  72. const auto duration = route.values["duration"].get<json::Number>().value;
  73.  
  74. // Warn users if extract does not contain the default coordinates from above
  75. if (distance == 0 || duration == 0)
  76. {
  77. std::cout << "Note: distance or duration is zero. ";
  78. std::cout << "You are probably doing a query outside of the OSM extract.nn";
  79. }
  80.  
  81. std::cout << "Distance: " << distance << " meter " << a << "n";
  82. std::cout << "Duration: " << duration << " secondsn";
  83. if(a==19999){return EXIT_SUCCESS;}
  84.  
  85. }
  86. else if (status == Status::Error)
  87. {
  88. const auto code = result.values["code"].get<json::String>().value;
  89. const auto message = result.values["message"].get<json::String>().value;
  90.  
  91. std::cout << "Code: " << code << "n";
  92. std::cout << "Message: " << code << "n";
  93. if(a==19999){return EXIT_FAILURE;}
  94. }
  95. }
  96. }
Add Comment
Please, Sign In to add comment