2

I'm implementing a wrapper that requests route information from different geospatial / GIS API providers. Input is always two or more waypoints (latitude, longitude pairs).

It is not my goal to do a public benchmark or a comparison between different service providers. The problem is, it works pretty well with Google Maps, Bing maps and Here maps but requesting a route from Esri route API takes forever.

For all providers, I tried to optimize settings as far as I could: - Limiting the requested output to geometry, time and distance - Using just default driving modes (such as car, no real time information...)

EDIT:

Request URLs and response times (requested from Berlin, Europe) below. I executed the requests multiple times, even at different days and the times are almost the same. Coordinates are always Paris to Prague.

Esri: 46,26 seconds(!)

https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World/solve?f=json&returnDirections=false&token=<my_api_token>&stops=2.3522,48.8566;14.4378,50.0755

Bing: 611 milliseconds

https://dev.virtualearth.net/REST/V1/Routes/Driving?key=<my_api_token>&ra=excludeItinerary,routePath&wp.1=48.8566,2.3522&wp.2=50.0755,14.4378

HERE: 664 milliseconds

http://route.api.here.com/routing/7.2/calculateroute.json?xnlp=CL_JSMv3.0.17.0&app_id=<my_api_token>&mode=fastest%3Bcar&representation=display&waypoint0=geo!48.8566%2C2.3522&waypoint1=geo!50.0755%2C14.4378&jsoncallback=H.service.jsonp.handleResponse(5)

Google: 92 milliseconds

https://maps.googleapis.com/maps/api/js/DirectionsService.Route?5m4&1m3&1m2&1d48.8566&2d2.352200000000039&5m4&1m3&1m2&1d50.0755&2d14.437800000000038&6e0&12sen-US&23e1&callback=_xdc_._95pqrj&key=<my_api_token> &token=117312

Has anyone experienced the same? Do I miss any steps?

1

It looks like you're testing using a large distance. Requests for shorter distances respond much more quickly (generally less than a second):

https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World/solve?f=json&returnDirections=false&stops=-116.1957,34.0564;-118.184,34.0546&token=<my_api_token>

Right now (Oct 2018) if you know you're using long distances and want better performance, you can add the query parameter overrides={"TopHierarchyLevel": 1}. Documentation here. In the future, this overrides parameter should not be necessary.

Adding that to your example, it should return in approx 7-9 seconds:

https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World/solve?f=json&returnDirections=false&token=<my_api_token>&stops=2.3522,48.8566;14.4378,50.0755&overrides={"TopHierarchyLevel": 1}
  • Another update: When executing this as http POST, it seems that your parameter helps speeding up the request to 9 seconds as promised. Still, the response time is 10 times longer than for the competitor apis. Really no other option to achieve similar performance? – beej Oct 17 '18 at 8:43
  • Does this parameter lead to reduced performance for short distance routes? Why wouldn't I always use this parameter to speed up any kind of route requests? – beej Oct 17 '18 at 8:54
  • I think there are certain situations where using this parameter on short distance routes would yield a lower quality result. – GavinR Oct 17 '18 at 13:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.