Skip to contents

A high-level, "one-shot" function to start an OSRM server that automatically handles OSRM installation and graph preparation. This is the recommended function for most users to get a server running quickly with minimal steps.

Usage

osrm_start(
  path,
  algorithm = c("mld", "ch"),
  quiet = FALSE,
  verbose = FALSE,
  ...
)

Arguments

path

A string. Path to the input data. Can be one of:

  • A path to an OSM file (e.g., /path/to/data.osm.pbf).

  • A path to a directory containing OSRM graph files or an OSM file.

  • A direct path to a final graph file (.osrm.mldgr or .osrm.hsgr).

algorithm

A string specifying the routing algorithm to use for graph preparation, either "mld" (Multi-Level Dijkstra, default) or "ch" (Contraction Hierarchies). This is only used when osrm_prepare_graph is automatically called.

quiet

A logical value. If TRUE, suppresses installer messages and warnings. Defaults to FALSE.

verbose

A logical. If FALSE (default), suppresses detailed console output from backend commands. If TRUE, shows all output, which is useful for debugging.

...

Additional arguments passed on to osrm_prepare_graph() (e.g., overwrite = TRUE) and osrm_start_server() (e.g., port = 5001).

Value

A processx::process object for the running server.

Details

This function is designed for convenience and automates the entire setup process. By default, it is not verbose and only prints high-level status messages.

  1. Check for OSRM Installation: It first verifies if the osrm-routed executable is available in the system's PATH. If not, it automatically calls osrm_install() to download and install the latest stable version.

  2. Process Input Path and Prepare Graph: The function intelligently handles the path argument to find or create the necessary graph files. If the graph files do not exist, it automatically runs osrm_prepare_graph() to build them, which may take some time.

  3. Start Server: Once the graph files are located or prepared, it launches the osrm-routed server and prints a confirmation message with the server's PID and port.

For advanced users or for debugging, set verbose = TRUE to see the detailed console output from the installation and graph preparation steps. For full manual control, use the lower-level functions like osrm_prepare_graph() and osrm_start_server() directly.

See also

osrm_stop(), osrm_start_server() for manual server startup.

Examples

# \donttest{
if (identical(Sys.getenv("OSRM_EXAMPLES"), "true")) {
  install_dir <- osrm_install(
    version = "latest",
    path_action = "session",
    quiet = TRUE
  )

  # copy example OSM PBF into a temporary workspace to avoid polluting pkg data
  pbf_path <- system.file("extdata/cur.osm.pbf", package = "osrm.backend")
  osrm_dir <- file.path(tempdir(), paste0("osrm-", Sys.getpid()))
  dir.create(osrm_dir, recursive = TRUE)
  local_pbf <- file.path(osrm_dir, "cur.osm.pbf")
  file.copy(from = pbf_path, to = local_pbf, overwrite = TRUE)

  # Start the server with one command.
  # It will quietly install OSRM and prepare the graph if needed.
  osrm_process <- osrm_start(local_pbf)

  # Stop the server when done.
  osrm_stop()

  # To see all backend logs during setup, use verbose = TRUE
  osrm_process_verbose <- osrm_start(local_pbf, verbose = TRUE)
  osrm_stop()

  osrm_uninstall(
    dest_dir = install_dir,
    clear_path = TRUE,
    force = TRUE,
    quiet = TRUE
  )
  unlink(osrm_dir, recursive = TRUE)
}
# }