40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import yaml
|
|
from geopy.distance import geodesic
|
|
|
|
import constants
|
|
|
|
with constants.OPTIMIZER_PARAMETERS_PATH.open('r') as f:
|
|
parameters = yaml.safe_load(f)
|
|
DETOUR_FACTOR = parameters['detour_factor']
|
|
AVERAGE_WALKING_SPEED = parameters['average_walking_speed']
|
|
|
|
|
|
def get_time(p1: tuple[float, float], p2: tuple[float, float]) -> int:
|
|
"""
|
|
Calculate the time in minutes to travel from one location to another.
|
|
|
|
Args:
|
|
p1 (Tuple[float, float]): Coordinates of the starting location.
|
|
p2 (Tuple[float, float]): Coordinates of the destination.
|
|
detour (float): Detour factor affecting the distance.
|
|
speed (float): Walking speed in kilometers per hour.
|
|
|
|
Returns:
|
|
int: Time to travel from p1 to p2 in minutes.
|
|
"""
|
|
|
|
|
|
# Compute the straight-line distance in km
|
|
if p1 == p2 :
|
|
return 0
|
|
else:
|
|
dist = geodesic(p1, p2).kilometers
|
|
|
|
# Consider the detour factor for average cityto deterline walking distance (in km)
|
|
walk_dist = dist*DETOUR_FACTOR
|
|
|
|
# Time to walk this distance (in minutes)
|
|
walk_time = walk_dist/AVERAGE_WALKING_SPEED*60
|
|
|
|
return round(walk_time)
|