Skip to content

[feat] Expose native OSRM and Valhalla APIs #87

@azarz

Description

@azarz

Feature

Expose native OSRM and Valhalla APIs

Is your feature request related to a problem? Please describe.

I would like to develop a web-based application using the maplibre-gl framework, and use the IGN routing APIs. The routing plugins available use native OSRM and Valhalla APIs to work, and I'd want to use them out of the box (https://github.com/maplibre/maplibre-gl-directions and https://github.com/watergis/mapbox-gl-valhalla)

Describe the solution you'd like

I'd like to be able to use the native APIs of OSRM and Valhalla on a road2 service (specifically, the one served by IGN).
For example :

  • osrm : {baseRoad2Url}/simple/1.0.0/osrm/driving/13.388860,52.517037;13.385983,52.496891?steps=true
  • valhalla : {baseRoad2Url}/simple/1.0.0/valhalla/isochrone?json={"locations":[{"lat":-1.0825252603106321,"lon":35.47230915879868}],"costing":"pedestrian","contours":[{"time":10,"color":"0000ff"}],"polygons":true}

Other suggestion :

  • osrm : {baseRoad2Url}/osrm/driving/13.388860,52.517037;13.385983,52.496891?steps=true
  • valhalla : {baseRoad2Url}/valhalla/isochrone?json={"locations":[{"lat":-1.0825252603106321,"lon":35.47230915879868}],"costing":"pedestrian","contours":[{"time":10,"color":"0000ff"}],"polygons":true}

Tasks

  • Create an openAPI JSON for OSRM (documentation/apis)
    • Route URL
    • GetCap URL to make the link between resources and profile/optimization
  • Create an openAPI JSON for Valhalla (documentation/apis)
    • Iso URL
    • GetCap URL to make the link between resources and profile/optimization
  • Modify the configuration to add the new APIs (docker/config/service.json)
  • Create the directories src/js/apis/osrm/1.0.0 and src/js/apis/valhalla/1.0.0
  • For each directory, code the init.js, update.js and index.js
    • For the init.js : create the getcap
    • For the update.js : update the getcap
    • For the index.js : create the router which handle requests.
  • Add new properties inside the routeRequest class to handle osrm options
  • Add new properties inside the isoRequest class to handle valhalla options
  • Add an optional option object inside the computeRequest function to indicate that we want the raw response of the motor or create two new classes for each motor responses
  • Add unit and integration tests for any new classes or properties of existing ones
  • Add request tests (test/functional/request/cucumber/features)
  • Modify the default configuration and run configuration functional tests
  • Update documentation
  • Update changelog

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions