Example #1
0
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(
            "═══════════════════════════════════════════════════════════════════════════════════════════════════"
        )
Example #2
0
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)
Example #3
0
    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] = []
Example #4
0
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
Example #5
0
    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)
Example #6
0
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
Example #7
0
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
Example #8
0
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(
            "╚════╩══════════════════════════════════════════════════╩═════════════════════════════════════╩══════════════════╝"
        )
Example #9
0
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>&nbsp;</strong>%s</p>
                <p style="text-align: center;"><em><strong>Ciudad:</strong></em> %s</p>
                <p>&nbsp;</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;
                        ">&nbsp;<p style="text-align: center;"><strong> Leyenda <br></strong></p>
                          &nbsp;<strong> Aeropuerto No Aislado</strong> &nbsp; <i class="fa fa-plane fa-2x" style="color:blue"></i><br>
                          &nbsp;<strong> Aeropuerto Aislado</strong> &nbsp; <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)