Library for generating routes through different preferred environment attributes
Project description
GeoRouter
GeoRouter is a python library that provides a highly customizable offline routing engine that allows users to find routes based on scenery and other typical navigation preferences. In addition, GeoRouter provides powerful tools for OSM (OpenStreetMap) and SRTM (Shuttle Radar Topography Mission) data manipulation and visualization. User's can easily get accurate elevation data by simply providing a latitude and longitude bounding box.
GeoRouter currently supports two routing algorithms: A* and a custom Bellman-Ford algorithm. The A* algorithm shortens or lengths corresponding edges based on the user's scenery preferences while the Bellman-Ford algorithm directly incentivizes edges with negative weights which virtually guarantees routes will align with the user's scenery preferences. The Bellman-Ford algorithm is therefore more powerful, but extra compute is needed to prevent negative cycles from forming via backtracking.
Installation
```
pip install georouter
```
You will also need OSM datasets from either BBBike or Geofabrik. The datasets should be in the form of .osm.pbf files.
SRTM datasets are automatically downloaded by GeoRouter, but a NASA Earthdata account is required as well as an account token.
Usage
from georouter import GeoRouter
Todo
- Add support for Southern Hemisphere SRTM data
- Increase speed of Bellman-Ford algorithm via caching previous paths for negative cycle detection
- Add more routing preferences
- Remove utility roads from routing graph
- Improve edge preprocessing via parallelization
- Add a save and load function for graphs and preprocessed edges
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for georouter-0.1.4-cp39-cp39-macosx_14_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca253f636168ffbc01b16a70d41ac0c86f164830ddbcef0c4c872205ef26eabc |
|
MD5 | 9f40c46eb78caab6f5ab36d591f03015 |
|
BLAKE2b-256 | f53bb4792ae9226921e76805a81dffd55b3ca098c50cee0194d68d7c24367517 |