import numpy as np import pandas as pd from pyproj import Geod def closest_coord_point(point): cities = pd.read_csv("africapolis.csv", index_col=0) oco = pd.read_csv("oco2.csv", index_col=0) def closest_city(point, df=None, population_threshold=0): """Get the name, population, and distance to the point of the closest city""" if df is None: df = pd.read_csv("africapolis.csv", index_col=0) df = df[df["Population"] > population_threshold] geod = Geod(ellps="WGS84") pos = df.apply(lambda row: geod.inv(point[1], point[0], row["Longitude"], row["Latitude"]), axis=1) fwd_azimuth, distances = pos.apply(lambda row: row[0]), pos.apply(lambda row: row[2]) min_index = distances.idxmin() city = df.loc[min_index] return { "name": city["Name"], "population": np.int64(city["Population"]), "distance": np.float64(distances[min_index]), "location": (city["Latitude"], city["Longitude"]), "fwd_azimuth": fwd_azimuth[min_index], }