wip
This commit is contained in:
@@ -1,20 +0,0 @@
|
||||
include "route.fbs";
|
||||
include "table.fbs";
|
||||
|
||||
namespace osrm.engine.api.fbresult;
|
||||
|
||||
table Error {
|
||||
code: string;
|
||||
message: string;
|
||||
}
|
||||
|
||||
table FBResult {
|
||||
error: bool = false;
|
||||
code: Error;
|
||||
data_version: string;
|
||||
waypoints: [Waypoint]; //Used as 'sources' waypoints for a 'Table' service
|
||||
routes: [RouteObject];
|
||||
table: Table;
|
||||
}
|
||||
|
||||
root_type FBResult;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +0,0 @@
|
||||
namespace osrm.engine.api.fbresult;
|
||||
|
||||
struct Position {
|
||||
longitude: float;
|
||||
latitude: float;
|
||||
}
|
||||
@@ -1,110 +0,0 @@
|
||||
include "waypoint.fbs";
|
||||
namespace osrm.engine.api.fbresult;
|
||||
|
||||
table Metadata {
|
||||
datasource_names: [string];
|
||||
}
|
||||
|
||||
table Annotation {
|
||||
distance: [uint];
|
||||
duration: [uint];
|
||||
datasources: [uint];
|
||||
nodes: [uint];
|
||||
weight: [uint];
|
||||
speed: [float];
|
||||
metadata: Metadata;
|
||||
}
|
||||
|
||||
enum ManeuverType: byte {
|
||||
Turn,
|
||||
NewName,
|
||||
Depart,
|
||||
Arrive,
|
||||
Merge,
|
||||
OnRamp,
|
||||
OffRamp,
|
||||
Fork,
|
||||
EndOfRoad,
|
||||
Continue,
|
||||
Roundabout,
|
||||
Rotary,
|
||||
RoundaboutTurn,
|
||||
Notification,
|
||||
ExitRoundabout,
|
||||
ExitRotary
|
||||
}
|
||||
|
||||
enum Turn: byte {
|
||||
None,
|
||||
UTurn,
|
||||
SharpRight,
|
||||
Right,
|
||||
SlightRight,
|
||||
Straight,
|
||||
SlightLeft,
|
||||
Left,
|
||||
SharpLeft
|
||||
}
|
||||
|
||||
table StepManeuver {
|
||||
location: Position;
|
||||
bearing_before: ushort;
|
||||
bearing_after: ushort;
|
||||
type: ManeuverType;
|
||||
modifier: Turn;
|
||||
exit: ubyte;
|
||||
}
|
||||
|
||||
table Lane {
|
||||
indications: [Turn];
|
||||
valid: bool;
|
||||
}
|
||||
|
||||
table Intersection {
|
||||
location: Position;
|
||||
bearings: [short];
|
||||
classes: [string];
|
||||
entry: [bool];
|
||||
in_bearing: uint;
|
||||
out_bearing: uint;
|
||||
lanes: [Lane];
|
||||
}
|
||||
|
||||
table Step {
|
||||
distance: float;
|
||||
duration: float;
|
||||
polyline: string;
|
||||
coordinates: [Position];
|
||||
weight: float;
|
||||
name: string;
|
||||
ref: string;
|
||||
pronunciation: string;
|
||||
destinations: string;
|
||||
exits: string;
|
||||
mode: string;
|
||||
maneuver: StepManeuver;
|
||||
intersections: [Intersection];
|
||||
rotary_name: string;
|
||||
rotary_pronunciation: string;
|
||||
driving_side: bool; //Where true stands for the left side.
|
||||
}
|
||||
|
||||
table Leg {
|
||||
distance: double;
|
||||
duration: double;
|
||||
weight: double;
|
||||
summary: string;
|
||||
annotations: Annotation;
|
||||
steps: [Step];
|
||||
}
|
||||
|
||||
table RouteObject {
|
||||
distance: float;
|
||||
duration: float;
|
||||
weight: float;
|
||||
weight_name: string;
|
||||
confidence: float; //Used only by 'Match' service
|
||||
polyline: string;
|
||||
coordinates: [Position];
|
||||
legs: [Leg];
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
include "waypoint.fbs";
|
||||
namespace osrm.engine.api.fbresult;
|
||||
|
||||
table Table {
|
||||
durations: [float];
|
||||
rows: ushort;
|
||||
cols: ushort;
|
||||
distances: [float];
|
||||
destinations: [Waypoint];
|
||||
fallback_speed_cells: [uint];
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
include "position.fbs";
|
||||
namespace osrm.engine.api.fbresult;
|
||||
|
||||
struct Uint64Pair {
|
||||
first: uint64;
|
||||
second: uint64;
|
||||
}
|
||||
|
||||
table Waypoint {
|
||||
hint: string;
|
||||
distance: float;
|
||||
name: string;
|
||||
location: Position;
|
||||
nodes: Uint64Pair; //Used only by 'Nearest' service
|
||||
matchings_index: uint; //Used only by 'Match' service
|
||||
waypoint_index: uint; //Used by 'Match' and 'Trip' services
|
||||
alternatives_count: uint; //Used only by 'Match' service
|
||||
trips_index: uint; //Used only by 'Trip' service
|
||||
}
|
||||
@@ -137,7 +137,7 @@ class TableAPI final : public BaseAPI
|
||||
speed_cells = MakeEstimatesTable(fb_result, fallback_speed_cells);
|
||||
}
|
||||
|
||||
fbresult::TableBuilder table(fb_result);
|
||||
fbresult::TableResultBuilder table(fb_result);
|
||||
table.add_destinations(destinations);
|
||||
table.add_rows(number_of_sources);
|
||||
table.add_cols(number_of_destinations);
|
||||
|
||||
@@ -37,6 +37,14 @@ inline LegGeometry assembleGeometry(const datafacade::BaseDataFacade &facade,
|
||||
{
|
||||
LegGeometry geometry;
|
||||
|
||||
// each container will at most have `leg_data.size()` + 1/2 elements in it
|
||||
// these additional 1/2 elements come from processing of very first and very last segment
|
||||
geometry.locations.reserve(leg_data.size() + 2);
|
||||
geometry.segment_distances.reserve(leg_data.size() + 1);
|
||||
geometry.segment_offsets.reserve(leg_data.size() + 1);
|
||||
geometry.annotations.reserve(leg_data.size() + 1);
|
||||
geometry.node_ids.reserve(leg_data.size() + 2);
|
||||
|
||||
// segment 0 first and last
|
||||
geometry.segment_offsets.push_back(0);
|
||||
geometry.locations.push_back(source_node.location);
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
#include "util/query_heap.hpp"
|
||||
#include "util/typedefs.hpp"
|
||||
|
||||
#include <boost/thread/tss.hpp>
|
||||
|
||||
namespace osrm::engine
|
||||
{
|
||||
|
||||
@@ -148,4 +146,4 @@ template <> struct SearchEngineData<routing_algorithms::mld::Algorithm>
|
||||
};
|
||||
} // namespace osrm::engine
|
||||
|
||||
#endif // SEARCH_ENGINE_DATA_HPP
|
||||
#endif // SEARCH_ENGINE_DATA_HPP
|
||||
@@ -16,48 +16,6 @@
|
||||
namespace osrm::util
|
||||
{
|
||||
|
||||
template <typename NodeID, typename Key> class GenerationArrayStorage
|
||||
{
|
||||
using GenerationCounter = std::uint16_t;
|
||||
|
||||
public:
|
||||
explicit GenerationArrayStorage(std::size_t size)
|
||||
: positions(size, 0), generation(1), generations(size, 0)
|
||||
{
|
||||
}
|
||||
|
||||
Key &operator[](NodeID node)
|
||||
{
|
||||
generation[node] = generation;
|
||||
return positions[node];
|
||||
}
|
||||
|
||||
Key peek_index(const NodeID node) const
|
||||
{
|
||||
if (generations[node] < generation)
|
||||
{
|
||||
return std::numeric_limits<Key>::max();
|
||||
}
|
||||
return positions[node];
|
||||
}
|
||||
|
||||
void Clear()
|
||||
{
|
||||
generation++;
|
||||
// if generation overflows we end up at 0 again and need to clear the vector
|
||||
if (generation == 0)
|
||||
{
|
||||
generation = 1;
|
||||
std::fill(generations.begin(), generations.end(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
GenerationCounter generation;
|
||||
std::vector<GenerationCounter> generations;
|
||||
std::vector<Key> positions;
|
||||
};
|
||||
|
||||
template <typename NodeID, typename Key> class ArrayStorage
|
||||
{
|
||||
public:
|
||||
@@ -73,29 +31,6 @@ template <typename NodeID, typename Key> class ArrayStorage
|
||||
std::vector<Key> positions;
|
||||
};
|
||||
|
||||
template <typename NodeID, typename Key> class MapStorage
|
||||
{
|
||||
public:
|
||||
explicit MapStorage(std::size_t) {}
|
||||
|
||||
Key &operator[](NodeID node) { return nodes[node]; }
|
||||
|
||||
void Clear() { nodes.clear(); }
|
||||
|
||||
Key peek_index(const NodeID node) const
|
||||
{
|
||||
const auto iter = nodes.find(node);
|
||||
if (nodes.end() != iter)
|
||||
{
|
||||
return iter->second;
|
||||
}
|
||||
return std::numeric_limits<Key>::max();
|
||||
}
|
||||
|
||||
private:
|
||||
std::map<NodeID, Key> nodes;
|
||||
};
|
||||
|
||||
template <typename NodeID, typename Key> class UnorderedMapStorage
|
||||
{
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user