Skip to content

Route

Compute route between coordinates.

Parameters:

Name Type Description Default
coordinates

List of (lon, lat) tuples or RouteParameters object

None
steps

Return route steps for each route leg (default False)

required
alternatives

Search for alternative routes (default False)

required
number_of_alternatives

Number of alternative routes (default 0)

required
annotations

Annotation type string or list (e.g., 'speed', ['distance', 'duration'])

required
geometries

Geometry format: 'polyline', 'polyline6', or 'geojson'

required
overview

Overview detail: 'simplified', 'full', or 'false'

required
continue_straight

Force straight at waypoints

required
waypoints

Waypoint indices to use

required
radiuses

Search radius in meters for each coordinate

required
bearings

Bearing constraints

required
hints

Hints from previous request

required
approaches

Approach constraints

required
exclude

Road classes to avoid (e.g., ['motorway'])

required
generate_hints

Generate hints for response

required
snapping

Snapping mode: 'default' or 'any'

required

Returns:

Type Description

Route result as osrm.Object

Examples:

Simple usage

result = osrm_instance.Route([(7.41, 43.73), (7.42, 43.74)])

With options

result = osrm_instance.Route( coordinates=[(7.41, 43.73), (7.42, 43.74)], steps=True, annotations='speed', geometries='geojson' )

Traditional usage with RouteParameters object

params = osrm.RouteParameters() params.coordinates = [(7.41, 43.73), (7.42, 43.74)] params.steps = True result = osrm_instance.Route(params)

Source code in osrm/__init__.py
def Route(self, coordinates=None, **kwargs):
    """
    Compute route between coordinates.

    Args:
        coordinates: List of (lon, lat) tuples or RouteParameters object
        steps: Return route steps for each route leg (default False)
        alternatives: Search for alternative routes (default False)
        number_of_alternatives: Number of alternative routes (default 0)
        annotations: Annotation type string or list (e.g., 'speed', ['distance', 'duration'])
        geometries: Geometry format: 'polyline', 'polyline6', or 'geojson'
        overview: Overview detail: 'simplified', 'full', or 'false'
        continue_straight: Force straight at waypoints
        waypoints: Waypoint indices to use
        radiuses: Search radius in meters for each coordinate
        bearings: Bearing constraints
        hints: Hints from previous request
        approaches: Approach constraints
        exclude: Road classes to avoid (e.g., ['motorway'])
        generate_hints: Generate hints for response
        snapping: Snapping mode: 'default' or 'any'

    Returns:
        Route result as osrm.Object

    Examples:
        # Simple usage
        result = osrm_instance.Route([(7.41, 43.73), (7.42, 43.74)])

        # With options
        result = osrm_instance.Route(
            coordinates=[(7.41, 43.73), (7.42, 43.74)],
            steps=True,
            annotations='speed',
            geometries='geojson'
        )

        # Traditional usage with RouteParameters object
        params = osrm.RouteParameters()
        params.coordinates = [(7.41, 43.73), (7.42, 43.74)]
        params.steps = True
        result = osrm_instance.Route(params)
    """
    # Support traditional usage with RouteParameters object
    if isinstance(coordinates, RouteParameters):
        return self._engine.Route(coordinates).to_dict()

    # Convenience method: build parameters from kwargs
    params = RouteParameters()

    # Set coordinates
    if coordinates is not None:
        params.coordinates = coordinates

    # Set other parameters with automatic enum conversion
    for key, value in kwargs.items():
        _set_param(params, key, value)

    return self._engine.Route(params).to_dict()

Route Parameters

Bases: RouteParameters

RouteParameters wrapper that handles string-to-enum conversion.

Source code in osrm/_params.py
def __init__(self, **kwargs):
    super().__init__()
    for key, value in kwargs.items():
        self.__setattr__(key, value)