Example #1
0
def verEspectro():
    data = request.get_json()
    data['errorBd'] = ""
    nombreMisionCrear = data['nombreMisionCrear']
    waypointSeleccionado = data['waypointSeleccionado']
    try:
        conn = conexion()
        daoMision = DaoMision(conn)
        mision = daoMision.getMisionNombre(nombreMisionCrear)
        idMision = mision.id

        daoWaypoints = DaoWaypoints(conn)
        wayp = daoWaypoints.getWaypointByNumber(waypointSeleccionado, idMision)
        idWayp = wayp.id

        daoEspway = DaoEspway(conn)
        espway = daoEspway.getEspwayWaypoint(idWayp)
        idEspectro = espway.espectros_id

        daoEspectros = DaoEspectros(conn)
        espectro = daoEspectros.getEspectros(idEspectro)
        resultado = espectro.resultado
        conn.close()

        b = makeImageC(resultado, 1)

        with open(b, "rb") as image_file:
            encoded_string = base64.b64encode(image_file.read())
            encoded_string = encoded_string.decode("utf-8")
        data['espectroC'] = encoded_string
    except Exception as errorBd:
        data['errorBd'] = "T"
        raise errorBd
    finally:
        return json.dumps(data)
Example #2
0
def capturaVueloApi(a, n, data, i): #i para prueba, generar varias imágenes de la captura asíncrona
    global listaEspectros

    id_waypoints = waypointsDB(data['nombreMisionCrear'])

    conn = conexion()
    daoEspectros = DaoEspectros(conn)
    espectro = Espectros()
    espectro.white = a
    espectro.dark = n
    espectro.capturado = []
    espectro.resultado = []
    espectro.sensores_id = idSensorVueloVIS
    espectro = daoEspectros.guardarEspectros(espectro)
    id_espectroV = espectro.id

    c, d, e, f, sumaCapturado= capturarVueloSinc(data['sensorVueloNIR'], data['sensorVueloVIS'], data['tiempoIntegracion'], data['numeroCapturas'], id_espectroV, i)
    listaEspectros.append(id_espectroV)

    daoEspway = DaoEspway(conn)
    espway = Espway()
    espway.espectros_id = id_espectroV
    espway.waypoints_id = id_waypoints
    espway = daoEspway.guardarEspway(espway)

    conn.close()
    return data, c, d, f, sumaCapturado
Example #3
0
def guardarTodos():
    data = request.get_json()
    data['errorBd'] = ""
    nombreMisionCrear = data['nombreMisionCrear']
    ruta = str(data['ruta'])
    usuario = str(data['usuario'])
    try:
        if os.path.isdir(ruta):
            data['errorCarpeta'] = ""
            idsWaypoints = []
            idsEspectros = []
            latlonsWaypoints = []
            conn = conexion()
            daoMision = DaoMision(conn)
            mision = daoMision.getMisionNombre(nombreMisionCrear)
            idMision = mision.id
            altura = mision.elevacion
            daoWaypoints = DaoWaypoints(conn)
            waypointsList = daoWaypoints.getAllWaypoints2(idMision)
            for i in range(0, len(waypointsList)):
                idsWaypoints.append(waypointsList[i].id)
                latlonsWaypoints.append(waypointsList[i].latlon)
            print(idsWaypoints)

            for i in range(0, len(idsWaypoints)):
                daoEspway = DaoEspway(conn)
                espway = daoEspway.getEspwayWaypoint(idsWaypoints[i])
                idEspectro = espway.espectros_id
                idsEspectros.append(idEspectro)
            print(idsEspectros)

            for i in range(0, len(idsEspectros)):
                latlons = latlonsWaypoints[i].split(",")
                rutaG = ruta
                daoEspectros = DaoEspectros(conn)
                espectro = daoEspectros.getEspectros(idsEspectros[i])
                resultado = espectro.resultado
                rutaG += "/Usuario("+usuario+")"+"Mision("+nombreMisionCrear+")"+ "WaypointNumber("+str(i)+")"
                print(rutaG)
                generate(resultado, rutaG, float(latlons[0]), float(latlons[1]), altura)

                # generate(resultado, rutaG, float(latlons[0]), float(latlons[1]), 5)
            conn.close()
        else:
            data['errorCarpeta'] = "T"
        # with open("D:/Tesis/Api/Flask/imagenEspectroC2.png", "rb") as image_file:
        #     encoded_string = base64.b64encode(image_file.read())
        #     encoded_string = encoded_string.decode("utf-8")
        # data['espectroR'] = encoded_string
        pass
    except Exception as errorBd:
        data['errorBd'] = "T"
        raise errorBd
    return json.dumps(data)
Example #4
0
def guardarTodos():
    data = request.get_json()
    data['errorBd'] = ""
    nombreMisionCrear = data['nombreMisionCrear']
    ruta = str(data['ruta'])
    filePath = FileManagement.to_relative(ruta)
    usuario = str(data['usuario'])
    try:
        if os.path.isdir(filePath):
            data['errorCarpeta'] = ""
            idsWaypoints = []
            idsEspectros = []
            latlonsWaypoints = []
            conn = conexion()
            daoMision = DaoMision(conn)
            mision = daoMision.getMisionNombre(nombreMisionCrear)
            idMision = mision.id
            altura = mision.elevacion
            daoWaypoints = DaoWaypoints(conn)
            waypointsList = daoWaypoints.getAllWaypoints2(idMision)
            print(waypointsList[0].id, waypointsList[1].id)  #272" lista de obj
            for i in range(0, len(waypointsList)):
                idsWaypoints.append(waypointsList[i].id)
                latlonsWaypoints.append(waypointsList[i].latlon)
            print(idsWaypoints)  #
            print("J")
            print(latlonsWaypoints)
            for i in range(0, len(idsWaypoints)):
                daoEspway = DaoEspway(conn)
                espway = daoEspway.getEspwayWaypoint(idsWaypoints[i])
                idEspectro = espway.espectros_id
                idsEspectros.append(idEspectro)

            for i in range(0, len(idsEspectros)):
                latlons = latlonsWaypoints[i].split(",")
                rutaG = filePath
                daoEspectros = DaoEspectros(conn)
                espectro = daoEspectros.getEspectros(idsEspectros[i])
                resultado = espectro.resultado
                rutaG += "/Usuario(" + usuario + ")" + "Mision(" + nombreMisionCrear + ")" + "WaypointNumber(" + str(
                    i) + ")"
                # filePath = FileManagement.to_relative(rutaG)
                generate(resultado, rutaG, float(latlons[0]),
                         float(latlons[1]), altura)
            conn.close()
        else:
            data['errorCarpeta'] = "T"
    except Exception as errorBd:
        data['errorBd'] = "T"
        print("Error en guardarTodos: ", errorBd)
        raise errorBd
    finally:
        return json.dumps(data)
Example #5
0
def calcularEspectro(ids):
    global wavelenghtsLista

    # stringDark= """SELECT dark FROM espectros WHERE id='%s';""" %(ids)
    # stringCapturado= """SELECT dark FROM espectros WHERE id='%s';""" %(ids)
    # stringWhite= """SELECT dark FROM espectros WHERE id='%s';""" %(ids)
    
    medida= []
    blanco= []
    negro= []
    negrolist= []
    blancolist= []
    suma= []
    resta= []
    espectroCal= []
    espectrocor= []
    wavecor= []

    conn = conexion()
    daoEspectros = DaoEspectros(conn)
    espectro = daoEspectros.getEspectros(ids)
    blanco = espectro.white
    negro = espectro.dark
    medida = espectro.capturado
    

    # conn = psycopg2.connect(host="localhost", port = 5432, database="geospectre", user="******", password="******")
    # cur = conn.cursor()
    # cur.execute(stringDark)
    # negro = cur.fetchone()[0][0]
    # cur.execute(stringWhite)
    # blanco = cur.fetchone()[0][0]
    # cur.execute(stringCapturado)
    # medida = cur.fetchone()[0][0]
    # cur.close()
    # conn.close()

    for i in range(0, len(wavelenghtsLista)):
        suma.append(float(blanco[i]) - float(negro[i]))
    # print(str(resta))
    for i in range(0, len(wavelenghtsLista)):
        resta.append(float(medida[i]) - float(negro[i]))
    for i in range(0, len(wavelenghtsLista)):
        if suma[i] == 0:
            suma[i] = 1
        espectroCal.append((float(resta[i]) / float(suma[i]))*100)

    espectro.resultado = espectroCal
    espectro = daoEspectros.actualizarEspectros(espectro)
    conn.close()
    return espectroCal
Example #6
0
def seleccionarMision():
    data = request.get_json()
    data['errorBd'] = ""
    data['waypointsList'] = ""
    misionSeleccionada = data['misionSeleccionada']
    numWaypoints = []
    try:
        # Obtengo ID de mision
        conn = conexion()
        daoMision = DaoMision(conn)
        mision = daoMision.getMisionNombre(misionSeleccionada)
        idMision = mision.id

        # Obtengo lista IDs sensores 201, 202, 203
        daoSensores = DaoSensores(conn)
        sensores = daoSensores.getSensoresMision(idMision)

        # Por cada ID de sensores obtengo ID de espectros 137, 138, 139
        for i in range(len(sensores)):
            daoEspectros = DaoEspectros(conn)
            espectros = daoEspectros.getEspectrosSensores(sensores[i])

            # Por cada ID de espectros retorno el RESULTADO del espectro
            # y verifico si está vacío
            for j in range(len(espectros)):
                espectro = daoEspectros.getEspectros(espectros[j])
                idEspectro = espectro.id
                print(idEspectro)
                resultado = espectro.resultado

                # Si está vació borro el waypoint, y el espectro
                # CASCADE espway
                if len(resultado) == 0:
                    daoEspway = DaoEspway(conn)
                    espway = daoEspway.getEspwayEspectro(idEspectro)
                    print("llego al if")
                    if espway == None:
                        print("if")
                        daoEspectros.borrarEspectros(idEspectro)
                    else:
                        print("else")
                        idWaypoint = espway.waypoints_id
                        daoWaypoints = DaoWaypoints(conn)
                        daoWaypoints.borrarWaypoint(idWaypoint)
                        daoEspectros.borrarEspectros(idEspectro)

        daoWaypoints = DaoWaypoints(conn)
        waypointsList = daoWaypoints.getAllWaypoints(idMision)
        for i in range(0, len(waypointsList)):
            numWaypoints.append(str(waypointsList[i].num_waypoint))
        conn.close()
        data['waypoints'] = numWaypoints
        pass
    except Exception as errorBd:
        data['errorBd'] = "T"
        raise errorBd
    finally:
        return json.dumps(data)
Example #7
0
def guardarEspectro():
    data = request.get_json()
    data['errorBd'] = ""
    data['waypointsList'] = ""
    data['espectroC'] = ""
    data['espectroR'] = ""
    nombreMisionCrear = data['nombreMisionCrear']
    waypointSeleccionado = data['waypointSeleccionado']
    ruta = str(data['ruta'])
    usuario = str(data['usuario'])
    print(waypointSeleccionado)
    try:
        if os.path.isdir(ruta):
            conn = conexion()
            daoMision = DaoMision(conn)
            mision = daoMision.getMisionNombre(nombreMisionCrear)
            idMision = mision.id
            altura = mision.elevacion
            daoWaypoints = DaoWaypoints(conn)
            wayp = daoWaypoints.getWaypointByNumber(waypointSeleccionado, idMision)
            idWayp = wayp.id
            latlon = wayp.latlon
            latlon = latlon.split(",")

            daoEspway = DaoEspway(conn)
            espway = daoEspway.getEspwayWaypoint(idWayp)
            idEspectro = espway.espectros_id

            daoEspectros = DaoEspectros(conn)
            espectro = daoEspectros.getEspectros(idEspectro)
            resultado = espectro.resultado
            conn.close()
            ruta += "/Usuario("+usuario+")"+"Mision("+nombreMisionCrear+")"+ "Waypoint("+waypointSeleccionado+")"
            print(ruta)
            generate(resultado, ruta, float(latlon[0]), float(latlon[1]), altura)
            # generate(resultado, ruta, float(latlon[0]), float(latlon[1]), 5)
            # makeImageG(resultado, ruta, float(latlon[0]), float(latlon[1]), 5)
            # with open("D:/Tesis/Api/Flask/imagenEspectroC2.png", "rb") as image_file:
            #     encoded_string = base64.b64encode(image_file.read())
            #     encoded_string = encoded_string.decode("utf-8")
            # data['espectroR'] = encoded_string
        else:
            data['errorCarpeta'] = "T"
    except Exception as errorBd:
        data['errorBd'] = "T"
        raise errorBd
    return json.dumps(data)
Example #8
0
def guardarTodos():
    data = request.get_json()
    data['errorBd'] = ""
    nombreMisionCrear = data['nombreMisionCrear']
    ruta = str(data['ruta'])
    usuario = str(data['usuario'])
    try:
        idsWaypoints = []
        idsEspectros = []
        conn = conexion()
        daoMision = DaoMision(conn)
        mision = daoMision.getMisionNombre(nombreMisionCrear)
        idMision = mision.id
        daoWaypoints = DaoWaypoints(conn)
        waypointsList = daoWaypoints.getAllWaypoints2(idMision)
        for i in range(0, len(waypointsList)):
            idsWaypoints.append(waypointsList[i].id)
        print(idsWaypoints)

        for i in range(0, len(idsWaypoints)):
            daoEspway = DaoEspway(conn)
            espway = daoEspway.getEspwayWaypoint(idsWaypoints[i])
            idEspectro = espway.espectros_id
            idsEspectros.append(idEspectro)
        print(idsEspectros)

        for i in range(0, len(idsEspectros)):
            rutaG = ruta
            daoEspectros = DaoEspectros(conn)
            espectro = daoEspectros.getEspectros(idsEspectros[i])
            resultado = espectro.resultado
            rutaG += "/Usuario(" + usuario + ")" + "Mision(" + nombreMisionCrear + ")" + "WaypointNumber(" + str(
                i) + ")" + ".png"
            print(rutaG)
            makeImageG(resultado, rutaG)
        conn.close()

        # with open("D:/Tesis/Api/Flask/imagenEspectroC2.png", "rb") as image_file:
        #     encoded_string = base64.b64encode(image_file.read())
        #     encoded_string = encoded_string.decode("utf-8")
        # data['espectroR'] = encoded_string
        pass
    except Exception as errorBd:
        data['errorBd'] = "T"
        raise errorBd
    return json.dumps(data)
Example #9
0
def guardarEspectro():
    data = request.get_json()
    data['errorBd'] = ""
    nombreMisionCrear = data['nombreMisionCrear']
    waypointSeleccionado = data['waypointSeleccionado']
    ruta = str(data['ruta'])
    usuario = str(data['usuario'])
    filePath = FileManagement.to_relative(ruta)
    try:
        if os.path.isdir(filePath):
            conn = conexion()
            daoMision = DaoMision(conn)
            mision = daoMision.getMisionNombre(nombreMisionCrear)
            idMision = mision.id
            altura = mision.elevacion
            daoWaypoints = DaoWaypoints(conn)
            wayp = daoWaypoints.getWaypointByNumber(waypointSeleccionado,
                                                    idMision)
            idWayp = wayp.id
            latlon = wayp.latlon.split(",")

            daoEspway = DaoEspway(conn)
            espway = daoEspway.getEspwayWaypoint(idWayp)
            idEspectro = espway.espectros_id

            daoEspectros = DaoEspectros(conn)
            espectro = daoEspectros.getEspectros(idEspectro)
            resultado = espectro.resultado
            conn.close()
            filePath += "/Usuario(" + usuario + ")" + "Mision(" + nombreMisionCrear + ")" + "Waypoint(" + waypointSeleccionado + ")"
            generate(resultado, filePath, float(latlon[0]), float(latlon[1]),
                     altura)
        else:
            data['errorCarpeta'] = "T"
    except Exception as errorBd:
        data['errorBd'] = "T"
        raise errorBd
    finally:
        return json.dumps(data)
Example #10
0
def guardarNegro():
    global id_espectros, n, idSensorTierraVIS
    data = request.get_json()
    data['errorBd'] = ""
    filePathSrc = 'D:/Tesis/Api/Flask/archivoTemporalNegro.txt';
    filePathDes = 'D:/Tesis/Api/Flask/archivoNegro.txt';
    try:
        copyfile(filePathSrc, filePathDes)
        if id_espectros == None:
            conn = conexion()
            espectro = Espectros()
            espectro.white = []
            espectro.capturado = []
            espectro.resultado = []
            espectro.dark = n
            espectro.sensores_id = idSensorTierraVIS
            daoEspectros = DaoEspectros(conn)
            espectro = daoEspectros.guardarEspectros(espectro)
            id_espectros = espectro.id
            conn.close()


            # conn = psycopg2.connect(host="localhost", port = 5432, database="geospectre", user="******", password="******")
            # cur = conn.cursor()
            # cur.execute("""INSERT INTO espectros (dark, sensores_id) 
            #     VALUES (%s, %s) RETURNING id;""", ([n], idSensorTierraVIS))
            # id_espectros = cur.fetchone()[0]
            # conn.commit()
            # cur.close()
            # conn.close()
        else:
            conn = conexion()
            daoEspectros = DaoEspectros(conn)
            espectro = daoEspectros.getEspectros(id_espectros)
            espectro.dark = n
            espectro = daoEspectros.actualizarEspectros(espectro)
            conn.close()

            # conn = psycopg2.connect(host="localhost", port = 5432, database="geospectre", user="******", password="******")
            # cur = conn.cursor()
            # cur.execute("""UPDATE espectros SET dark=%s WHERE id=%s;""", ([n], id_espectros))
            # # id_espectros = cur.fetchone()[0]
            # # print(id_espectros)
            # conn.commit()
            # cur.close()
            # conn.close()
    except Exception as errorBd:
        data['errorBd'] = "T"
        raise errorBd
    return json.dumps(data)
Example #11
0
 def guardarNegro(idEspectro, blanco, negro, capturado, resultado,
                  idSensor):
     data = {}
     data['errorBd'] = ""
     if idEspectro == None:
         conn = Conexion.conexion()
         espectro = Espectros()
         espectro.white = blanco
         espectro.capturado = capturado
         espectro.resultado = resultado
         espectro.dark = negro
         espectro.sensores_id = idSensor
         daoEspectros = DaoEspectros(conn)
         espectro = daoEspectros.guardarEspectros(espectro)
         idEspectro = espectro.id
         conn.close()
     else:
         conn = Conexion.conexion()
         daoEspectros = DaoEspectros(conn)
         espectro = daoEspectros.getEspectros(idEspectro)
         espectro.dark = negro
         espectro = daoEspectros.actualizarEspectros(espectro)
         conn.close()
Example #12
0
    def guardarBlanco(idEspectro, blanco, negro, capturado, resultado,
                      idSensor):
        if idEspectro == None:
            conn = Conexion.conexion()
            espectro = Espectros()
            espectro.white = blanco
            espectro.dark = negro
            espectro.capturado = capturado
            espectro.resultado = resultado
            espectro.sensores_id = idSensor

            daoEspectros = DaoEspectros(conn)
            espectro = daoEspectros.guardarEspectros(espectro)
            idEspectro = espectro.id
            print(idEspectro)
            conn.close()
        else:
            print("else blanco")
            conn = Conexion.conexion()
            daoEspectros = DaoEspectros(conn)
            espectro = daoEspectros.getEspectros(idEspectro)
            espectro.white = blanco
            espectro = daoEspectros.actualizarEspectros(espectro)
            conn.close()
Example #13
0
def capturarVueloSinc(sensorVueloNIR, sensorVueloVIS, tiempoIntegracion,
                      numeroCapturas, id_espectros, i):
    errorCal = "F"
    errorBd = "F"
    errorCapturaV = ""
    filePath = 'D:/Tesis/Api/Flask/archivoTemporalVuelo.txt'
    try:
        sumaCapturado = 0.0
        if os.path.exists(filePath):
            os.remove(filePath)
        else:
            print("Can not delete the file as it doesn't exists")
        vueloCapturado = capturarVueloRpi(sensorVueloVIS, sensorVueloNIR,
                                          tiempoIntegracion, numeroCapturas)
        # print("vuelocapturado "+vueloCapturado)
        v = getFilesVuelo(vueloCapturado)
        for i in range(0, len(v)):
            sumaCapturado += float(v[i])
        # TODO: Comparar el viejo con el nuevo, y si está mal volver a capturar
        # Obtener blanco referencia
        conn = conexion()
        daoEspectros = DaoEspectros(conn)
        espectro = daoEspectros.getEspectros(id_espectros)
        blancoRef = espectro.white
        # print(blancoRef)
        contador = 0
        for i in range(0, len(v)):
            if float(v[i]) > float(blancoRef[i]):
                print(float(v[i]), float(blancoRef[i]))
                contador += 1
            if contador > 100:
                break
        if contador > 100:
            errorCal = "T"
            return errorBd, errorCapturaV, id_espectros, errorCal, sumaCapturado

        # ---------------------------------------------------------------------
        # print("v")
        # print(v)
        errorCapturaV = ""
    except Exception as e:
        errorCapturaV = "T"
        raise e

    try:
        conn = conexion()
        daoEspectros = DaoEspectros(conn)
        espectro = daoEspectros.getEspectros(id_espectros)
        espectro.capturado = v
        espectro.resultado = []
        espectro = daoEspectros.actualizarEspectros(espectro)
        conn.close()

        # conn = psycopg2.connect(host="localhost", port = 5432, database="geospectre", user="******", password="******")
        # cur = conn.cursor()
        # cur.execute("""UPDATE espectros SET capturado=%s WHERE id=%s;""", ([v], id_espectros))
        # conn.commit()
        # # cur.close()
        # # conn.close()

        espectroCalculado = calcularEspectro(id_espectros)
        # makeImageC(espectroCalculado, i)
        # cur.execute("""UPDATE espectros SET resultado=%s WHERE id=%s RETURNING id;""", ([espectroCalculado], id_espectros))
        # idLastEspectre = cur.fetchone()[0]
        # conn.commit()
        # cur.close()
        # conn.close()
        errorBd = ""
    except Exception as errorBd:
        errorBd = "T"
        raise errorBd
    return errorBd, errorCapturaV, id_espectros, errorCal, sumaCapturado
Example #14
0
waypointSeleccionado = 0
conn = conexion()
daoMision = DaoMision(conn)
mision = daoMision.getMisionNombre(nombreMisionCrear)
idMision = mision.id
print(idMision)
daoWaypoints = DaoWaypoints(conn)
wayp = daoWaypoints.getWaypointByNumber(waypointSeleccionado, idMision)
idWayp = wayp.id
print(idWayp)
daoEspway = DaoEspway(conn)
espway = daoEspway.getEspwayWaypoint(idWayp)
idEspectro = espway.espectros_id
print(idEspectro)

daoEspectros = DaoEspectros(conn)
espectro = daoEspectros.getEspectros(idEspectro)
capturado = espectro.capturado
resultado = espectro.resultado
conn.close()
print(capturado)
print(resultado)

# data = {'a':"a", 'b':"b", 'c':"c"}
# data['a'] = "hgfd"
# data['b'] = "b"
# data['c'] = "c"
# data['d'] = "d"
# print(data['a'])
# app = Flask(__name__)
# def er():