remove geopy dependency
This commit is contained in:
		| @@ -1,5 +1,5 @@ | ||||
| import yaml | ||||
| from geopy.distance import geodesic | ||||
| from math import sin, cos, sqrt, atan2, radians | ||||
|  | ||||
| import constants | ||||
|  | ||||
| @@ -8,6 +8,7 @@ with constants.OPTIMIZER_PARAMETERS_PATH.open('r') as f: | ||||
|     DETOUR_FACTOR = parameters['detour_factor'] | ||||
|     AVERAGE_WALKING_SPEED = parameters['average_walking_speed'] | ||||
|  | ||||
| EARTH_RADIUS_KM = 6373 | ||||
|  | ||||
| def get_time(p1: tuple[float, float], p2: tuple[float, float]) -> int: | ||||
|     """ | ||||
| @@ -22,16 +23,28 @@ def get_time(p1: tuple[float, float], p2: tuple[float, float]) -> int: | ||||
|     """ | ||||
|  | ||||
|  | ||||
|     # Compute the straight-line distance in km | ||||
|     if p1 == p2 : | ||||
|     if p1 == p2: | ||||
|         return 0 | ||||
|     else:  | ||||
|         dist = geodesic(p1, p2).kilometers | ||||
|     else: | ||||
|         # Compute the distance in km along the surface of the Earth | ||||
|         # (assume spherical Earth) | ||||
|         # this is the haversine formula, stolen from stackoverflow | ||||
|         # in order to not use any external libraries | ||||
|         lat1, lon1 = radians(p1[0]), radians(p1[1]) | ||||
|         lat2, lon2 = radians(p2[0]), radians(p2[1]) | ||||
|  | ||||
|     # Consider the detour factor for average cityto deterline walking distance (in km) | ||||
|     walk_dist = dist*DETOUR_FACTOR | ||||
|         dlon = lon2 - lon1 | ||||
|         dlat = lat2 - lat1 | ||||
|  | ||||
|         a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2 | ||||
|         c = 2 * atan2(sqrt(a), sqrt(1 - a)) | ||||
|  | ||||
|         distance = EARTH_RADIUS_KM * c | ||||
|  | ||||
|     # Consider the detour factor for average an average city | ||||
|     walk_distance = distance * DETOUR_FACTOR | ||||
|  | ||||
|     # Time to walk this distance (in minutes) | ||||
|     walk_time = walk_dist/AVERAGE_WALKING_SPEED*60 | ||||
|     walk_time = walk_distance / AVERAGE_WALKING_SPEED * 60 | ||||
|  | ||||
|     return round(walk_time) | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import numpy as np | ||||
|  | ||||
| from scipy.optimize import linprog | ||||
| from collections import defaultdict, deque | ||||
| from geopy.distance import geodesic | ||||
|  | ||||
| from structs.landmark import Landmark | ||||
| from .get_time_separation import get_time | ||||
|   | ||||
		Reference in New Issue
	
	Block a user