Context
The routing gateway hard-codes 'smoothing': 10 in the isochrones request payload sent to ORS:
services/gateway/routing_service.py line 453 (_handle_isochrones_tabular)
- Same file, line 479 (
post_isochrones_tabular)
output_rows.append([row[0], get_ors_response('isochrones', row[1], {
'locations': [[row[2], row[3]]],
'range': [row[4] * 60],
'location_type': 'start',
'range_type': 'time',
'smoothing': 10
}, format, ors_host)])
Problem
smoothing controls the polygon-densification pass ORS runs over the reachable cell set after the Dijkstra flood-fill completes. Larger values produce smoother polygons but cost extra compute and memory. On continental graphs (e.g. USA driving-hgv, no fastisochrones enabled), the polygon at large ranges is huge and the smoothing pass adds a meaningful fraction of the gateway timeout budget — not the dominant cost, but a noticeable slice.
We just bumped the gateway timeout for isochrones to 300 s and added an engine-side maximum_range_time: 7200 cap (separate change). Reducing or making smoothing configurable is the cheap follow-up that buys more headroom without a graph rebuild.
Proposed fix
Make smoothing an optional caller-controlled parameter (default 0 or omit entirely):
- Add an optional
smoothing INT parameter to:
OPENROUTESERVICE_APP.CORE.ISOCHRONES(method, lon, lat, range, region [, smoothing])
_ISOCHRONES_RAW service function
- Update the gateway endpoints (
_handle_isochrones_tabular, post_isochrones_tabular) to forward the smoothing value if present, omit the key otherwise (ORS default behaviour).
- Default to
smoothing=0 in the SQL function to skip the smoothing pass unless the caller asks for it.
Acceptance criteria
- USA HGV isochrones at range = 120 min return at least 5 s faster than baseline.
- Existing callers that pass 4 args still work (signature stays backwards compatible).
- Re-deployed gateway image bumped from
routing_reverse_proxy:v1.0.2 to v1.0.3.
Related
- Plan: investigation of HGV USA isochrones gateway timeout. Already deployed: gateway timeout 120s -> 300s for isochrones, engine-side
maximum_range_time 2147483647 -> 7200.
- See
routing_service.py:_probe_ors_state for warming-up vs computation-time distinction.
Context
The routing gateway hard-codes
'smoothing': 10in the isochrones request payload sent to ORS:services/gateway/routing_service.pyline 453 (_handle_isochrones_tabular)post_isochrones_tabular)Problem
smoothingcontrols the polygon-densification pass ORS runs over the reachable cell set after the Dijkstra flood-fill completes. Larger values produce smoother polygons but cost extra compute and memory. On continental graphs (e.g. USAdriving-hgv, nofastisochronesenabled), the polygon at large ranges is huge and the smoothing pass adds a meaningful fraction of the gateway timeout budget — not the dominant cost, but a noticeable slice.We just bumped the gateway timeout for isochrones to 300 s and added an engine-side
maximum_range_time: 7200cap (separate change). Reducing or makingsmoothingconfigurable is the cheap follow-up that buys more headroom without a graph rebuild.Proposed fix
Make
smoothingan optional caller-controlled parameter (default 0 or omit entirely):smoothing INTparameter to:OPENROUTESERVICE_APP.CORE.ISOCHRONES(method, lon, lat, range, region [, smoothing])_ISOCHRONES_RAWservice function_handle_isochrones_tabular,post_isochrones_tabular) to forward the smoothing value if present, omit the key otherwise (ORS default behaviour).smoothing=0in the SQL function to skip the smoothing pass unless the caller asks for it.Acceptance criteria
routing_reverse_proxy:v1.0.2tov1.0.3.Related
maximum_range_time2147483647 -> 7200.routing_service.py:_probe_ors_statefor warming-up vs computation-time distinction.