1#ifndef OSMSCOUT_NAVIGATION_DATA_AGENT_H
2#define OSMSCOUT_NAVIGATION_DATA_AGENT_H
33 std::map<FileOffset,WayRef>
ways;
34 std::map<FileOffset,AreaRef>
areas;
39 std::map<DatabaseId, RoutableDBObjects>
dbMap;
70 template <
typename DataLoader>
74 std::map<std::string,DatabaseId> databaseMapping;
76 DataLoader &dataLoader;
80 dataLoader(mapServiceProvider)
87 auto result=std::list<NavigationMessageRef>();
90 routeUpdateMessage !=
nullptr) {
92 databaseMapping.clear();
94 for (
auto &e:routeUpdateMessage->routeDescription->GetDatabaseMapping()){
95 databaseMapping[e.second]=e.first;
97 vehicle=routeUpdateMessage->vehicle;
99 requestMessage !=
nullptr) {
101 if (databaseMapping.empty()){
106 requestMessage->bbox.GetMaxCoord()) >
Kilometers(2)){
107 log.Warn() <<
"Requested routable data from huge region: " << requestMessage->bbox.GetDisplayText();
110 auto msg=std::make_shared<RoutableObjectsMessage>(requestMessage->timestamp, std::make_shared<RoutableObjects>());
112 dataLoader.loadRoutableObjects(requestMessage->bbox,
119 result.push_back(msg);
#define OSMSCOUT_API
Definition CoreImportExport.h:45
RoutableObjectsRequestMessage(const Timestamp ×tamp, const GeoBox &bbox)
RouteUpdateMessage(const Timestamp ×tamp, const RouteDescriptionRef &routeDescription, const osmscout::Vehicle &vehicle)
DataAgent(DataLoader &mapServiceProvider)
Definition DataAgent.h:79
RoutableObjectsMessage(const Timestamp ×tamp, const RoutableObjectsRef &data)
std::list< NavigationMessageRef > Process(const NavigationMessageRef &message) override
Definition DataAgent.h:85
std::vector< VoiceSample > message
Definition VoiceInstructionAgent.h:99
GeoBox bbox
Precomputed (cache) bounding box.
Definition DataAgent.h:53
RoutableObjectsRef data
Definition DataAgent.h:63
osmscout::Vehicle vehicle
Definition Agents.h:87
OSMSCOUT_API Distance GetSphericalDistance(const GeoCoord &a, const GeoCoord &b)
OSMSCOUT_API Log log
Definition LoggerImpl.h:95
std::shared_ptr< TypeConfig > TypeConfigRef
Definition TypeConfig.h:1396
std::shared_ptr< Way > WayRef
Definition Way.h:213
std::chrono::system_clock::time_point Timestamp
Definition Time.h:27
std::shared_ptr< Area > AreaRef
Definition Area.h:360
Distance Kilometers(double km)
Definition Distance.h:362
uint32_t DatabaseId
Definition DBFileOffset.h:30
std::shared_ptr< RoutableObjects > RoutableObjectsRef
Definition DataAgent.h:49
Vehicle
Definition OSMScoutTypes.h:55
@ vehicleCar
Definition OSMScoutTypes.h:58
std::shared_ptr< RoutableObjectsMessage > RoutableObjectsMessageRef
Definition DataAgent.h:68
std::shared_ptr< NavigationMessage > NavigationMessageRef
Definition Engine.h:56
const Timestamp timestamp
Definition Engine.h:50
Definition DataAgent.h:31
std::map< FileOffset, AreaRef > areas
Definition DataAgent.h:34
std::map< FileOffset, WayRef > ways
Definition DataAgent.h:33
TypeConfigRef typeConfig
Definition DataAgent.h:32
Definition DataAgent.h:38
WayRef GetWay(const DatabaseId &dbId, const ObjectFileRef &objRef) const
GeoBox bbox
Definition DataAgent.h:40
TypeConfigRef GetTypeConfig(const DatabaseId &dbId) const
AreaRef GetArea(const DatabaseId &dbId, const ObjectFileRef &areaRef) const
std::map< DatabaseId, RoutableDBObjects > dbMap
Definition DataAgent.h:39