openremote / fleet-management

The Fleet Management/Telematics implementation on top of the OpenRemote open-source IoT device management platform.
https://openremote.io/fleet-telematics/
Other
12 stars 3 forks source link

Investigate Addition of openrouteservice in the OpenRemote stack #1

Open pankalog opened 10 months ago

pankalog commented 10 months ago

I have come across using openrouteservice. It can be hosted locally as a docker container, it is open-source, and it returns the routes in GeoJSON format. It not only allows calculating routes, but also allows isochrone maps, time-distance matrices, and route optimization. In the same way that an mbtiles file is required for Maps to be rendered, openrouteservice requires a PBF file that contains all the metadata for shops, roads, streets, traffic indices etc. to then generate a route. It is able to generate a route by walking, biking, driving, through bus schedules, and even hiking, and the files are easily publically available for all regions of the world.

I have gotten the container up and running within my laptop, and it offers routes between points in stellar accuracy and efficiency, all within localhost, and automatically returns the result in GeoJSON format that is easily understandable by MapLibre. All that with minimal setup.

Using openrouteservice would allow OpenRemote to figure out which assets/cars are closest to a certain point of the map, create pre-planned routes for assets to follow, figure out routes between a car and a location it needs to go to, and even make an optimization feature about the efficiency of the routing a driver preferred over the optimal. By implementing openrouteservice, a considerable amount of features are then allowed to be implemented within OpenRemote.

There is a plethora of use-cases for which an integration of openrouteservice within OpenRemote would make development much faster and more efficient.

Maybe it would be a good idea to implement openrouteservice as a ContainerService, allowing for dependency injection, and thus accordingly disable specific features if the openrouteservice container is not present.

I am imagining something like ManagerKeycloakIdentityProvider or more appropriately MapService, the part of the TileServer implementation. That is, if we are unable to generate a connection to the ORS docker container, use the limited MapLibre functionality.