Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import googlemaps | |
| import os | |
| def load_data(flag, broker_id): | |
| if flag == 0: # broker data | |
| df_segments = pd.read_csv('../api_local/segments_data.csv') | |
| df_carriers = pd.read_csv('../api_local/carriers_info.csv') | |
| else: #global data | |
| df_segments = pd.read_csv('segments_data.csv') | |
| df_carriers = pd.read_csv('carriers_info.csv') | |
| return df_segments, df_carriers | |
| def query_type(route_c2c, route_s2s, df_segments): | |
| if route_s2s in df_segments['s2s_route'].values: | |
| #print('Existe State to State') | |
| if route_c2c in df_segments['c2c_route'].values: | |
| #print('Existe City to City') | |
| return 'city2city' | |
| else: | |
| # print('No existe City to City') | |
| return 'state2state' | |
| else: | |
| #print('No existe State to State') | |
| return 'pickup' | |
| def get_distance(c2c_route, route_s2s, query_type, broker_id): | |
| if query_type == 'city2city': | |
| df_distances = pd.read_csv(f'../data/{broker_id}/distances.csv') | |
| distance = df_distances.loc[df_distances['c2c_route'] == c2c_route, 'distance'].values | |
| print(f"Distancia encontrada en el dataset: {distance[0]} millas.") | |
| return distance[0] | |
| else: | |
| df_distances = pd.read_csv('../data/API_distances_saved.csv') | |
| if c2c_route in df_distances['c2c_route'].values: | |
| distance = df_distances.loc[df_distances['c2c_route'] == c2c_route, 'distance'].values | |
| print(f"Distancia encontrada en el API_distances_saved: {distance[0]} millas.") | |
| return distance[0] | |
| else: | |
| print(f"La ruta '{c2c_route}' no se encontró en el dataset. Consultando API de Google Maps...") | |
| return get_distance_api(c2c_route, route_s2s) | |
| def get_distance_api(route_c2c, route_s2s): | |
| API_KEY = 'AIzaSyBQ0cBrxzx6Gh7EYC1nBpBCQKvi4vC15dc' | |
| gmaps = googlemaps.Client(key=API_KEY) | |
| try: | |
| origenc, destinoc = route_c2c.split(' - ') | |
| origens, destinos = route_s2s.split(' - ') | |
| origen = f"{origens}, {origenc}" | |
| destino = f"{destinos}, {destinoc}" | |
| result = gmaps.distance_matrix( | |
| origins=origen, | |
| destinations=destino, | |
| mode="driving", | |
| units="imperial" # Distancia en millas | |
| ) | |
| distance_text = result['rows'][0]['elements'][0]['distance']['text'] # Ejemplo: "124 mi" | |
| distance_miles = float(distance_text.split(' ')[0].replace(',', '')) # Convertir "124 mi" a 124.0 | |
| print(f"Distancia obtenida de Google Maps API: {distance_miles} millas.") | |
| filename = '../data/API_distances_saved.csv' | |
| if os.path.exists(filename): | |
| df = pd.read_csv(filename) | |
| else: | |
| df = pd.DataFrame(columns=['c2c_route', 'distance']) | |
| # Agregar la nueva ruta y distancia | |
| new_entry = {'c2c_route': route_c2c, 'distance': distance_miles} | |
| df = pd.concat([df, pd.DataFrame([new_entry])], ignore_index=True) | |
| # Guardar el DataFrame actualizado en el archivo | |
| df.to_csv(filename, index=False) | |
| print(f"Ruta y distancia guardadas en {filename}.") | |
| return distance_miles | |
| except Exception as e: | |
| print(f"Error al obtener la distancia para la ruta '{route_c2c}' usando la API de Google Maps: {e}") | |
| return None | |