def mostrarDistancias(): """ Funcionamiento: muestra distancia segun las rutas Precondicion: no recibe nada Postcondicion: no devuelve nada """ ruta_archivo = buscarArchivo("RutasAeropuertos.csv") with open(ruta_archivo) as archivo_rutas: leer_arc = csv.reader(archivo_rutas) lista_rutas = [] for fila in leer_arc: r1 = int(fila[0]) r2 = int(fila[1]) dist = float(fila[2]) lista_rutas += [(r1, r2, dist)] # print("»»» Del",r1,"al",r2,"hay",dist, "km «««") # print("════════════════════════════════════════════════════════") # print(listaAero()) lista_aeropuertos = listaAero() for i in range(len(lista_rutas)): for x in range(len(lista_aeropuertos)): if lista_aeropuertos[x][0] == lista_rutas[i][0]: print(str(i + 1).ljust(2), "# Del", lista_aeropuertos[x][1]) break for y in range(len(lista_aeropuertos)): if lista_aeropuertos[y][0] == lista_rutas[i][1]: print(" al", lista_aeropuertos[y][1]) break print(" hay", lista_rutas[i][2], "Km.") print( "═══════════════════════════════════════════════════════════════════════════════════════════════════" )
def AbrirMapaAeropuertos(): """ Funcionamiento: abre el mapa de aeropuertos Precondicion: no recibe nada Postcondicion: no devuelve nada """ archivo = 'file:///' + buscarArchivo('MapaAeropuertos.html') browser_path = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s" try: wb.get(browser_path).open_new(archivo) except wb.Error: wb.open_new(archivo)
def _add_vertices(self): """ Funcionamiento: agrega los vertices al diccionario desde un archivo Precondicion: no recibe parametros Postcondicion: no devuelve nada """ ruta_archivo = buscarArchivo("AeropuertosArg.csv") with open(ruta_archivo) as archivo_vertices: leer_vertices = csv.reader(archivo_vertices) for fila_vert in leer_vertices: vert = int(fila_vert[0]) if vert not in self._graph_dict: self._graph_dict[vert] = []
def listaAero(): """ Funcionamiento: crea una lista de tuplas con (id,nombreAeropuerto) Precondicion: no recibe nada Postcondicion: devuelve lista de tuplas con la informacion necesaria """ # Leyendo el archivo de aeropuertos ruta_archivo = buscarArchivo("AeropuertosArg.csv") with open(ruta_archivo) as archivo_aero: leer_aero = csv.reader(archivo_aero) lista_aeropuertos = [] for fila in leer_aero: indice = int(fila[0]) nombreAero = fila[1] lista_aeropuertos += [(indice, nombreAero)] return lista_aeropuertos
def _add_edges(self): """ Funcionamiento: agrega las aristas al diccionario desde un archivo Precondicion: no recibe parametros Postcondicion: no devuelve nada """ ruta_archivo = buscarArchivo("RutasAeropuertos.csv") with open(ruta_archivo) as archivo_edges: leer_edges = csv.reader(archivo_edges) for fila_edge in leer_edges: v1 = int(fila_edge[0]) v2 = int(fila_edge[1]) aux = (v1, v2) edge = set(aux) (vertex1, vertex2) = tuple(edge) if vertex1 in self._graph_dict: if vertex2 not in self._graph_dict[vertex1]: self._graph_dict[vertex1].append(vertex2) self._graph_dict[vertex2].append(vertex1)
def list_ID_aeropuertos(): """ Funcionamiento: se crea una lista con la identificación y coordenadas de los aeropuertos Precondiciones: no recibe parametros Postcondiciones: devuelve una lista de las ID y coordenadas de los aeropuertos """ # Cambiar la ruta segun donde se lo guarde ruta_archivo = buscarArchivo("AeropuertosArg.csv") with open(ruta_archivo) as archivo_csv: leer = csv.reader(archivo_csv) list_ID = [] for linea in leer: ID = linea[0] latitud = float(linea[4]) longitud = float(linea[5]) list_ID.append((ID, latitud, longitud)) return list_ID
def distancia(id1, id2): """ -Funcionamiento: Esta funcion se encarga de calcular la distancia entre dos aeropuertos -Precondiciones: Recibe como parametros dos ID de aeropuertos -Postcondiciones: Calcula con ciertas operaciones matematicas la distancia y la devuelve """ radio = 6371 # Este es el radio de la Tierra ruta_archivo = buscarArchivo("AeropuertosArg.csv") with open(ruta_archivo) as archivo_csv: leer = csv.reader(archivo_csv) encontro = False encontro2 = False for linea in leer: if float(linea[0]) == id1: lat1 = float(linea[4]) long1 = float(linea[5]) encontro = True if float(linea[0]) == id2: lat2 = float(linea[4]) long2 = float(linea[5]) encontro2 = True #Si los ID no existen if not encontro or not encontro2: return -1 lat1 = radians(lat1) lat2 = radians(lat2) long1 = radians(long1) long2 = radians(long2) dlat = lat2 - lat1 dlon = long2 - long1 a = pow(sin(dlat / 2), 2) + cos(lat1) * cos(lat2) * pow(sin(dlon / 2), 2) dist = 2 * radio * asin(sqrt(a)) return dist
def mostrarDatos(): """ Funcionamiento: muestra datos de aeropuertos Precondicion: no recibe nada Postcondicion: no devuelve nada """ ruta_archivo = buscarArchivo("AeropuertosArg.csv") with open(ruta_archivo) as archivoAeropuertos: leer_archivo = csv.reader(archivoAeropuertos) print( "╔════╦══════════════════════════════════════════════════╦═════════════════════════════════════╦══════════════════╗" ) print("║", ("ID").rjust(2), "║", ("Aeropuertos").center(48), "║", ("Ciudades").center(35), "║", ("Provincias").center(16), "║") print( "╠════╬══════════════════════════════════════════════════╬═════════════════════════════════════╬══════════════════╣" ) for fila in leer_archivo: nombre = fila[1][11:] print("║", fila[0].rjust(2), "║", nombre.center(48), "║", fila[2].center(35), "║", fila[3].center(16), "║") print( "╚════╩══════════════════════════════════════════════════╩═════════════════════════════════════╩══════════════════╝" )
def CrearMapaRutas(): """ Funcionamiento: crea el mapa de las rutas con los aeropuertos Precondicion: no recibe nada Postcondicion: no devuelve nada """ ruta = buscarArchivo("AeropuertosArg.csv") ruta2 = buscarArchivo("RutasAeropuertos.csv") map_osm = folium.Map(location=[-40.1872152, -64.6290514], zoom_start=4) #df=pd.read_csv('Argentina.csv',names=['AirportID','Name','City','Country','Latitud','Longitud']) df = pd.read_csv( ruta, names=['ID', 'Nombre', 'Ciudad', 'Provincia', 'Latitud', 'Longitud']) df2 = pd.read_csv(ruta2, names=['ID Origen', 'ID Destino', 'Distancia']) lista = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 ] aislados = dict.fromkeys(lista) for index, row in df2.iterrows(): aislados[row['ID Origen']] = 1 aislados[row['ID Destino']] = 1 grupo2 = folium.FeatureGroup(name='Aeropuertos Aislados') for index, row in df.iterrows(): info = """ <p><font face="verdana" color="black"> <p style="text-align: center;"><strong>%s</strong></p> <p style="text-align: center;"><em><strong>Provincia:</strong></em><strong> </strong>%s</p> <p style="text-align: center;"><em><strong>Ciudad:</strong></em> %s</p> <p> </p> </font></p> """ % (row['Nombre'], row['Provincia'], row['Ciudad']) iframe = branca.element.IFrame(html=info, width="400", height="150") if aislados[row['ID']] == 1: folium.Marker([row['Latitud'], row['Longitud']], popup=folium.Popup(iframe, max_width=400), icon=folium.Icon(color='blue', icon='plane', prefix='fa')).add_to(map_osm) else: folium.Marker([row['Latitud'], row['Longitud']], popup=folium.Popup(iframe, max_width=400), icon=folium.Icon(color='red', icon='plane', prefix='fa')).add_to(grupo2) grupo2.add_to(map_osm) latitudes = {} longitudes = {} ciudades = {} for index, row in df.iterrows(): latitudes[row['ID']] = round(row['Latitud'], 6) longitudes[row['ID']] = round(row['Longitud'], 6) ciudades[row['ID']] = str(row['Ciudad']) for index, row in df2.iterrows(): lineas = [] li = [] li.append(latitudes[row['ID Origen']]) li.append(longitudes[row['ID Origen']]) lineas.append(li) li = [] li.append(latitudes[row['ID Destino']]) li.append(longitudes[row['ID Destino']]) lineas.append(li) mostrar = ciudades[row['ID Origen']] + " - " + ciudades[ row['ID Destino']] #folium.PolyLine(locations=lineas,color=colorRandom(),weight=3,opacity=1,popup=mostrar).add_to(map_osm) folium.PolyLine(locations=lineas, color=colorRandom(), weight=3.5, opacity=1, popup=mostrar + " " + str(row['Distancia']) + " km").add_to( folium.FeatureGroup(name=mostrar).add_to(map_osm)) folium.LayerControl().add_to(map_osm) leyenda = ''' <div style="position: fixed; bottom: 50px; left: 50px; width: 288px; height: 160px; border:3px solid black; z-index:9999; font-size:18px; background:#F9EECF; "> <p style="text-align: center;"><strong> Leyenda <br></strong></p> <strong> Aeropuerto No Aislado</strong> <i class="fa fa-plane fa-2x" style="color:blue"></i><br> <strong> Aeropuerto Aislado</strong> <i class="fa fa-plane fa-2x" style="color:red"></i> </div> ''' map_osm.get_root().html.add_child(folium.Element(leyenda)) directorio = Path(os.getcwd()) directorio = str(directorio) directorio += '\\Visualización\\MapaRutas.html' map_osm.save(directorio)