Skip to content

Using real map data and A* search to find a path between two points - implemented using C++17

Notifications You must be signed in to change notification settings

imehrdadmahdavi/street-route-planner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Street Route Planning

This project uses real map data and A* search algorithm to find a path between two points, just as you might see in a desktop or mobile mapping application. The project uses data from the OpenStreetMap open source project. Maps of this project are completely generated by individuals who volunteer to perform ground surveys of their local environment.

Demo

Map

Cloning

When cloning this project, be sure to use the --recurse-submodules flag to import sub modules.

git clone https://github.com/imehrdadmahdavi/street-route-planner.git --recurse-submodules

Dependencies

This project was built and tested on an Ubuntu 18.04 machine. To install all of the above dependencies in Ubuntu, run the below commands in the Home directory:

sudo apt update
sudo apt install build-essential
sudo apt install cmake
sudo apt install libcairo2-dev
sudo apt install libgraphicsmagick1-dev
sudo apt install libpng-dev

git clone --recurse-submodules https://github.com/cpp-io2d/P0267_RefImpl
cd P0267_RefImpl
mkdir Debug
cd Debug
cmake --config Debug "-DCMAKE_BUILD_TYPE=Debug" ..
cmake --build .
sudo make install

Compiling and Running

Compiling

To compile the project, first, create a build directory in the project folder and change to that directory:

mkdir build && cd build

From within the build directory, then run cmake and make as follows:

cmake ..
make

Running

The executable will be placed in the build directory. From within build, you can run the project as follows:

./OSM_A_star_search
[Enter Input Arguments]

Input arguments should be in the [s_x s_y e_x e_y] format which represent x and y coordinates of the starting and ending points of our search. Each value should also be between 0 and 100.

You can specify a map file as below (optional):

./OSM_A_star_search -f ../<your_osm_file.osm>

Testing

The testing executable is also placed in the build directory. From within build, you can run the unit tests as follows:

./test

Code Strucutre

Code Structure

About

Using real map data and A* search to find a path between two points - implemented using C++17

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published