/
srv
/
osrm
/
osrm-backend
/
include
/
extractor
/
/srv/osrm/osrm-backend/include/extractor
mkdir
upload
Name
Size
Mode
Actions
intersection/
-
0755
rm
class_data.hpp
981
0644
edit
dl
rm
compressed_edge_container.hpp
3336
0644
edit
dl
rm
compressed_node_based_graph_edge.hpp
418
0644
edit
dl
rm
conditional_turn_penalty.hpp
589
0644
edit
dl
rm
datasources.hpp
1207
0644
edit
dl
rm
edge_based_edge.hpp
3467
0644
edit
dl
rm
edge_based_graph_factory.hpp
7787
0644
edit
dl
rm
edge_based_node.hpp
383
0644
edit
dl
rm
edge_based_node_segment.hpp
2050
0644
edit
dl
rm
extraction_containers.hpp
3679
0644
edit
dl
rm
extraction_helper_functions.hpp
4827
0644
edit
dl
rm
extraction_node.hpp
459
0644
edit
dl
rm
extraction_relation.hpp
5949
0644
edit
dl
rm
extraction_segment.hpp
715
0644
edit
dl
rm
extraction_turn.hpp
4983
0644
edit
dl
rm
extraction_way.hpp
4268
0644
edit
dl
rm
extractor.hpp
5267
0644
edit
dl
rm
extractor_callbacks.hpp
3249
0644
edit
dl
rm
extractor_config.hpp
3040
0644
edit
dl
rm
files.hpp
24372
0644
edit
dl
rm
graph_compressor.hpp
1271
0644
edit
dl
rm
internal_extractor_edge.hpp
2642
0644
edit
dl
rm
intersection_bearings_container.hpp
4487
0644
edit
dl
rm
location_dependent_data.hpp
1797
0644
edit
dl
rm
maneuver_override.hpp
5456
0644
edit
dl
rm
maneuver_override_relation_parser.hpp
1785
0644
edit
dl
rm
name_table.hpp
3596
0644
edit
dl
rm
nbg_to_ebg.hpp
450
0644
edit
dl
rm
nodes_of_way.hpp
1411
0644
edit
dl
rm
node_based_edge.hpp
8024
0644
edit
dl
rm
node_based_graph_factory.hpp
5155
0644
edit
dl
rm
node_data_container.hpp
4558
0644
edit
dl
rm
node_restriction_map.hpp
2292
0644
edit
dl
rm
packed_osm_ids.hpp
520
0644
edit
dl
rm
profile_properties.hpp
5029
0644
edit
dl
rm
query_node.hpp
1411
0644
edit
dl
rm
raster_source.hpp
5002
0644
edit
dl
rm
restriction.hpp
1750
0644
edit
dl
rm
restriction_graph.hpp
4500
0644
edit
dl
rm
restriction_parser.hpp
1768
0644
edit
dl
rm
road_classification.hpp
8390
0644
edit
dl
rm
scripting_environment.hpp
2426
0644
edit
dl
rm
scripting_environment_lua.hpp
4253
0644
edit
dl
rm
segment_data_container.hpp
8032
0644
edit
dl
rm
serialization.hpp
8834
0644
edit
dl
rm
suffix_table.hpp
1407
0644
edit
dl
rm
traffic_lights.hpp
514
0644
edit
dl
rm
traffic_signals.hpp
656
0644
edit
dl
rm
travel_mode.hpp
3666
0644
edit
dl
rm
turn_lane_types.hpp
3754
0644
edit
dl
rm
turn_path.hpp
7483
0644
edit
dl
rm
turn_path_compressor.hpp
2220
0644
edit
dl
rm
turn_path_filter.hpp
669
0644
edit
dl
rm
way_restriction_map.hpp
3114
0644
edit
dl
rm
Edit:
/srv/osrm/osrm-backend/include/extractor/node_based_graph_factory.hpp
(5155B)
#ifndef OSRM_EXTRACTOR_NODE_BASED_GRAPH_FACTORY_HPP_ #define OSRM_EXTRACTOR_NODE_BASED_GRAPH_FACTORY_HPP_ #include "extractor/compressed_edge_container.hpp" #include "extractor/maneuver_override.hpp" #include "extractor/node_based_edge.hpp" #include "extractor/node_data_container.hpp" #include "extractor/packed_osm_ids.hpp" #include "extractor/scripting_environment.hpp" #include "traffic_signals.hpp" #include "util/coordinate.hpp" #include "util/node_based_graph.hpp" #include <boost/filesystem/path.hpp> #include <memory> #include <string> #include <unordered_set> #include <vector> namespace osrm::extractor { // Turn the output of the extraction process into a graph that represents junctions as nodes and // ways as edges between these nodes. The graph forms the further input for OSRMs creation of the // edge-based graph and is also the basic concept for annotating paths. All information from ways // that is transferred into the API response is connected to the edges of the node-based graph. // // The input to the graph creation is the set of edges, traffic signals, barriers, meta-data,... // which is generated during extraction and stored within the extraction containers. class NodeBasedGraphFactory { public: // The node-based graph factory transforms the graph data into the // node-based graph to represent the OSM network. This includes geometry compression, annotation // data optimisation and many other aspects. After this step, the edge-based graph factory can // turn the graph into the routing graph to be used with the navigation algorithms. NodeBasedGraphFactory(ScriptingEnvironment &scripting_environment, std::vector<TurnRestriction> &turn_restrictions, std::vector<UnresolvedManeuverOverride> &maneuver_overrides, const TrafficSignals &traffic_signals, std::unordered_set<NodeID> &&barriers, std::vector<util::Coordinate> &&coordinates, extractor::PackedOSMIDs &&osm_node_ids, const std::vector<NodeBasedEdge> &edge_list, std::vector<NodeBasedEdgeAnnotation> &&annotation_data); auto const &GetGraph() const { return compressed_output_graph; } auto const &GetBarriers() const { return barriers; } auto const &GetCompressedEdges() const { return compressed_edge_container; } auto const &GetCoordinates() const { return coordinates; } auto const &GetAnnotationData() const { return annotation_data; } auto const &GetOsmNodes() const { return osm_node_ids; } auto &GetCompressedEdges() { return compressed_edge_container; } auto &GetCoordinates() { return coordinates; } auto &GetAnnotationData() { return annotation_data; } auto &GetOsmNodes() { return osm_node_ids; } // to reduce the memory footprint, the node-based graph factory allows releasing memory after it // might have been used for the last time: void ReleaseOsmNodes(); private: // Build and validate compressed output graph void BuildCompressedOutputGraph(const std::vector<NodeBasedEdge> &edge_list); // Compress the node-based graph into a compact representation of itself. This removes storing a // single edge for every part of the geometry and might also combine meta-data for multiple // edges into a single representative form void Compress(ScriptingEnvironment &scripting_environment, std::vector<TurnRestriction> &turn_restrictions, std::vector<UnresolvedManeuverOverride> &maneuver_overrides, const TrafficSignals &traffic_signals); // Most ways are bidirectional, making the geometry in forward and backward direction the same, // except for reversal. We make use of this fact by keeping only one representation of the // geometry around void CompressGeometry(); // After graph compression, some of the annotation entries might not be referenced anymore. We // compress the annotation data by relabeling the node-based graph references and removing all // unreferenced entries void CompressAnnotationData(); // After produce, this will contain a compressed version of the node-based graph util::NodeBasedDynamicGraph compressed_output_graph; // To store the meta-data for the graph that is purely annotative / not used for the navigation // itself. Since the edges of a node-based graph form the nodes of the edge based graphs, we // transform this data into the EdgeBasedNodeDataContainer as output storage. std::vector<NodeBasedEdgeAnnotation> annotation_data; // General Information about the graph, not used outside of extractor std::unordered_set<NodeID> barriers; std::vector<util::Coordinate> coordinates; // data to keep in sync with the node-based graph extractor::PackedOSMIDs osm_node_ids; // for the compressed geometry extractor::CompressedEdgeContainer compressed_edge_container; }; } // namespace osrm::extractor #endif // OSRM_EXTRACTOR_NODE_BASED_GRAPH_FACTORY_HPP_
Save
cmd:
run