Skip to main content

A Python libary to generate a random route with a specified length.

Project description

Repository Banner

A Python package to generate a random route with a specified length.

Utilizes the openrouteservice API to generate the routing and the Overpass API for picking a random location.

Installation

Random-Route-Generator releases are available as wheel packages for macOS, Windows and Linux on PyPI. Install it using pip:

pip install random-route-generator

Example

This script generates a random route which is maximum 25km long and starts at the coordinate (51.846812, 6.242033). It uses mountain-biking route generation and utilizes 4 random points. The route also avoids ferries and steps and is self-contained.

from randomRouteGenerator.route_generator import RouteGenerator
from randomRouteGenerator.coordinate import Coordinate

generator = RouteGenerator()

#Manually set the openrouteservice API key
generator.api_key = ""

#OR read the API key from a file
#generator.read_api_key("ors_api.key")


#What type of route generation should be used? (See README)
generator.routing_profile = "cycling-mountain"

#How many random points should be generated?"
generator.point_amount = 4

#How should the origin and end point be handled (See RouteGenerator.ROUTE_MODE)?
generator.route_mode = generator.ROUTE_MODE.START_END_ORIGIN

#Which features should be avoided in the route?
generator.avoids = ["ferries", "steps"]

#Generate the route with the given origin point and maximum length
p = generator.generate_route(Coordinate(51.846812, 6.242033), 25000)


length = p.get_length()
duration = p.get_duration()
elevation = p.get_elevation()

#Retrieve information about the road-types in the route i.e. gravel, paved, ...
print(p.get_way_info())

#Print all routing points (all points generated by the routing)
for x in p.routing_points:
	print(x)



#Print all way-points (ONLY the random points whose amount is specified in generator.point_amount)
for x in p.points:
	print(x)


#Generate a GPX file containing the route
p.generate_gpx_file(filename="out.gpx")

Profiles

  • driving-car (Regular car routing)
  • driving-hgv (Routing for heavy-trucks)
  • cycling-regular (Routing for regular cycling)
  • cycling-road (Routing for road bikes)
  • cycling-mountain (Routing for mountain bikes, prefers offroad tracks)
  • cycling-electric (Routing for E-bikes)

Credits

  • openrouteservice - Used to generate the routing between the points
  • Overpass-API - Used for picking a random location
  • gpxpy - Used for exporting to a GPX file
  • overpy - Used for communicating with the Overpass-API
  • haversine - Used for coordinate calculations

License

GPL v3.0

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

random-route-generator-1.0.3.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

random_route_generator-1.0.3-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file random-route-generator-1.0.3.tar.gz.

File metadata

File hashes

Hashes for random-route-generator-1.0.3.tar.gz
Algorithm Hash digest
SHA256 209b2d6ed8060b428f656c865b52ccfdd25993e1761cab359118310b62eed44e
MD5 e5236824fc2f70889ec4368ba9b38414
BLAKE2b-256 858a6336d8c2592796a070355a4eb7b4be08744da7c8f4c8e7dc50b4f8f43497

See more details on using hashes here.

File details

Details for the file random_route_generator-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for random_route_generator-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2282534fbfcc5b82237f70383d9d167184a6974ca63be720762adb78bd84810f
MD5 8a0be8bc3f7f4b66c6309d2500ac533f
BLAKE2b-256 3054d073f6bb377f69d7c69e09a65448d3fe9afc07a25d897291ff93f4946b8d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page