{"id":17933652,"url":"https://github.com/keyan/route_planner","last_synced_at":"2025-03-24T06:33:25.232Z","repository":{"id":87742755,"uuid":"150759754","full_name":"keyan/route_planner","owner":"keyan","description":"Road network routing engine","archived":false,"fork":false,"pushed_at":"2020-05-30T18:20:30.000Z","size":227,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-19T03:05:54.687Z","etag":null,"topics":["algorithms","graph-theory","osm","routing-engine"],"latest_commit_sha":null,"homepage":"http://demo.keyanp.com/route_planner","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-28T15:24:02.000Z","updated_at":"2023-02-08T15:55:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"2ff18521-97e1-4caa-baf3-e17e48a2f0c0","html_url":"https://github.com/keyan/route_planner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyan%2Froute_planner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyan%2Froute_planner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyan%2Froute_planner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyan%2Froute_planner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keyan","download_url":"https://codeload.github.com/keyan/route_planner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245223366,"owners_count":20580348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","graph-theory","osm","routing-engine"],"created_at":"2024-10-28T21:41:03.887Z","updated_at":"2025-03-24T06:33:25.226Z","avatar_url":"https://github.com/keyan.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# route_planner\n\nA road network routing engine modeled after [OSRM](https://github.com/Project-OSRM/osrm-backend) and built using educational resources provided by Dr. Hannah Bast in her course [Efficient Route Planning](http://ad-wiki.informatik.uni-freiburg.de/teaching/EfficientRoutePlanningSS2012).\n\nPurely an academic exercise, not intended for production usage.\n\n## Overview\n\nA road network router using [OpenStreetMap](https://www.openstreetmap.org/) data. Currently the demo server uses A\\* routing with landmark heuristics.\n\n![Screenshot of web frontend](https://user-images.githubusercontent.com/6401746/47963067-59aad580-dfdb-11e8-9671-66e68811afb9.png)\n\nFuture improvements:\n\n1. Replace A\\* usage with contraction hierarchies\n1. Improved webserver and error handling for clients, currently not clear when attempting to route outside of the configured network\n1. Investigate techniques for handling larger regions, currently OSM XML parsing and connected component computations are very slow for large graphs\n\n## Usage\n\n### Demo\n\nA live demo using vector tiles provided by [MapBox](https://www.mapbox.com/) and configured with a small graph containing a region within Seattle WA is available at: http://demo.keyanp.com/route_planner\n\nYou can make direct requests to the demo routing server as well:\n```\n$ curl http://demo.keyanp.com/route?47.619872,-122.347477,47.598289,-122.334700\n```\n\n### Build from source\n\nYou will need a C++11 compatible compiler (`g++`) and `make`.\n\nInstall dependencies (Debian):\n```\n$ apt-get update \u0026\u0026 apt-get install -y g++ make\n```\n\nInstall dependencies (MacOSX):\n```\n$ brew install make\n# Follow prompts to install Xcode developer tools\n$ g++\n```\n\nDownload boost:\n```\n$ make install\n```\n\nBuild and run benchmarks:\n```\n$ make install build \u0026\u0026 ./main\n```\n\n### Local server\n\nBuild and run in server mode:\n```\n$ make build \u0026\u0026 ./main [port]\n```\n\n### Development\n\nRun tests with:\n```\n$ make test\n```\n\nA Debian VM is provided to allow for use of `gdb` and `valgrind` without running into issues with MacOSX:\n```\n# Run Debian VM and login\n$ vagrant up \u0026\u0026 vagrant ssh\n\n# Keep local dir in sync with VM (run from host machine)\n$ vagrant rsync-auto\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeyan%2Froute_planner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeyan%2Froute_planner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeyan%2Froute_planner/lists"}