Spaces:
Sleeping
Sleeping
| from geopy.geocoders import Nominatim | |
| from geopy import distance | |
| def get_coords_from_address(address: str) -> str: | |
| """ | |
| Converts a street address into latitude and longitude coordinates. | |
| Args: | |
| address (str): The address to search for (e.g., "Eiffel Tower, Paris"). | |
| Returns: | |
| str: A formatted string with the coordinates "Lat: XX.XXXX, Lon: YY.YYYY" | |
| or an error message if the address is not found. | |
| """ | |
| try: | |
| geolocator = Nominatim(user_agent="geocalc_mcp_app_hackathon") | |
| location = geolocator.geocode(address) | |
| if location: | |
| # If a location is found, format the latitude and longitude into a string. | |
| lat = round(location.latitude, 4) | |
| lon = round(location.longitude, 4) | |
| return f"Lat: {lat}, Lon: {lon}" | |
| else: | |
| return "Address not found. Please try being more specific. E.g., '1600 Amphitheatre Parkway, Mountain View, CA'" | |
| except Exception as e: | |
| print(f"An error occurred: {e}") | |
| return "An error occurred while trying to contact the geocoding service." | |
| def calculate_distance(lat1: float, lon1: float, lat2: float, lon2: float, unit: str = "km") -> str: | |
| """ | |
| Calculates the distance between two points on the Earth's surface using the Haversine formula. | |
| Args: | |
| lat1 (float): Latitude of the first point. | |
| lon1 (float): Longitude of the first point. | |
| lat2 (float): Latitude of the second point. | |
| lon2 (float): Longitude of the second point. | |
| unit (str, optional): Unit of measurement for the distance. Default is "km". | |
| Returns: | |
| float: The distance between the two points in kilometers. | |
| """ | |
| print("calculate_distance", lat1, lon1, lat2, lon2, unit) | |
| result = "The distance between the two points is: " | |
| if unit == "km": | |
| result += distance.distance((lat1, lon1), (lat2, lon2)).km | |
| else: | |
| result += distance.distance((lat1, lon1), (lat2, lon2)).miles | |
| return result | |