Beispiel #1
0
def mergeTrimNor(data1, tabla):
    normal = gNor.SerieController(cfg)
    data = []
    etiTrim = ["codigo", "nombre", "latitud", "Longitud", "Altitud"]
    trim = [
        "EFM-V", "EFM-N", "AMJ-V", "AMJ-N", "JAS-V", "JAS-N", "OND-V", "OND-N"
    ]
    for b in range(0, len(años)):
        for c in range(0, len(trim)):
            etiTrim.append(trim[c] + str(años[b]))
    data.append(etiTrim)
    añoini = 1981
    añofin = 2010
    for i in range(1, len(data1)):
        # from ENSO work
        vtmp = data1[i]
        serieRR = normal.getSerieDos(vtmp[0], añoini, añofin, tabla)
        normalRR = normal.MakeNormal(serieRR)
        #print( i, " normal de  ", vtmp[0], "\n", np.round(np.mean(normalRR.iloc[0:3]), 1), sep="")
        #print(len(vtmp)," * ",vtmp," \n",len(vtmpo), " *",vtmpo)
        etiTrim = vtmp[0:5]
        cont = 0
        for j in range(5, len(vtmp)):
            if cont == 12:
                cont = 0
            etiTrim.extend([vtmp[j]])
            etiTrim.extend(
                [np.round(np.mean(normalRR.iloc[cont:(cont + 3)]), 1)])
            cont = cont + 3
            #etiTrim
        data.append(etiTrim)

    return data
Beispiel #2
0
 def __init__(self, ):
     """Constructor for FillMounthSerie"""
     cfg = cfgdb.configDB()
     cfg.readConfig("/home/drosero/Documentos/.drvmysql.cnf")
     self.cfg = cfg
     self.udb = unir.UnirMchDBFMen(self.cfg)
     self.esConexion = esController.EstacionController(self.cfg)
     self.conecmch = serieController.SerieController(self.cfg)
Beispiel #3
0
 def mchDBFMensual(self, añoi, añof, tabla,seriedbf,es):
     """Consulta los datos a la base de datos mch para generar una serie de tiempo"""
     dataEsta = pd.DataFrame()
     year = np.arange(añoi, añof+1, 1)  # crea la lista de años para comparar
     """Recorre cada una de las estacioens para calcular consultar los datos"""
     estInfo = estacionController.EstacionController(self.cfg)
     serie = serieController.SerieController(self.cfg)
     head = ["codigo", "anio", "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"]
     nulos = [np.nan]
     seriemch = pd.DataFrame()
     estCunsul = estInfo.getEstationbycod(es)  # consulta la informacion de la estacion por el codigo
     coddbf = estCunsul['municipio'][0]
     for i in range(0, len(year)):
         emptyRow = pd.DataFrame({"a": ["M0000"], "b": [-10],
                                  "c": nulos, "d": nulos, "e": nulos, "f": nulos, "g": nulos, "h": nulos,
                                  "i": nulos, "j": nulos, "k": nulos, "l": nulos, "m": nulos, "n": nulos})
         emptyRow.columns = head
         emptyRow.iat[0, 1] = year[i]
         emptyRow.iat[0, 0] = estCunsul.iat[0, 0]
         tempmch = serie.getSerie(estCunsul.iat[0, 0], year[i], year[i], tabla)
         #print(tempmch)
         tempdbf = seriedbf[(seriedbf['ANNO'] == year[i])]
         #print(tempdbf)
         if tempmch.empty:
             #busca dentro del dbf para completar los datos vacios
             if not tempdbf.empty:
                 for itera in range(2, 14):
                     if not np.isnan(tempdbf.iat[0,itera]):
                         emptyRow.iat[0, itera] = tempdbf.iat[0, itera]
         else:
             ########### dataframe filtrado
             #print("Tempdbf \n",tempdbf,"\nTempmch\n",tempmch,"\nEmpty row\n",emptyRow)
             for itera in range(2, 14):
                 emptyRow.iat[0, itera] = tempmch.iat[0, itera]
                 if not tempdbf.empty and np.isnan(emptyRow.iat[0,itera]) and not np.isnan(tempdbf.iat[0,itera]):
                     """print(emptyRow.iat[0,1],emptyRow.columns[itera],emptyRow.iat[0, itera] ," to ", tempdbf.iat[0,itera],
                           tempdbf.iat[0,0],tempdbf.columns[itera])"""
                     emptyRow.iat[0, itera] = tempdbf.iat[0,itera]
                         # seriemch[(seriemch['anio'] == thisYear)][seriemch.columns[2:14]]=temp[temp.columns[2:14]]
             # agrega los valores consultados al frame
         if i == 0:
             seriemch = emptyRow
             #seriemch = seriemch.append(emptyRow, ignore_index=True)
         else:
             seriemch = seriemch.append(emptyRow,ignore_index=True)
         #print(year[i]," datos agregados ",len(seriemch)," i ",i)
     #print("voy a imprimir los datos para la estacion ", estCunsul.iat[0, 0])
     return seriemch
Beispiel #4
0
def makeVarArchi(tabla, vec, extr, tempe):
    d = [vec]
    conteo = 0
    varsEsta = []
    estCon = st.EstacionController(cfg)
    lisCodRR = estCon.getListCod(tabla, 20)
    for i in range(0, lisCodRR.__len__()):
        codE = lisCodRR.iloc[i][0]
        añoini = 1981
        añofin = 2010
        # obtener un listado de estaciones de temp
        getestacion = estCon.getEstationbycod(codE)
        # from ENSO work
        normal = gNor.SerieController(cfg)
        serieRR = normal.getSerieDos(codE, añoini, añofin, tabla)
        normalRR = normal.MakeNormal(serieRR)
        estacion = estas.Estacion(getestacion["estacion"], getestacion["municipio"], getestacion["nombreEstacion"] \
                                  , getestacion["latitud2"], getestacion["longitud2"], getestacion["altitud"])
        norm = norM.NorMBaseM(estacion, [añoini, añofin], normalRR)
        if norm.hayNormal:
            varsEsta = [estacion.codigo.values[0], estacion.nombre.values[0], estacion.latitud.values[0] \
                , estacion.longitud.values[0], estacion.altitud.values[0]]
            varsEsta.extend(
                unirVariacion(codE, 1973, 1976, tabla, norm, extr, tempe))
            varsEsta.extend(
                unirVariacion(codE, 1988, 1989, tabla, norm, extr, tempe))
            varsEsta.extend(
                unirVariacion(codE, 2004, 2006, tabla, norm, extr, tempe))
            varsEsta.extend(
                unirVariacion(codE, 2008, 2009, tabla, norm, extr, tempe))
            varsEsta.extend(
                unirVariacion(codE, 2010, 2012, tabla, norm, extr, tempe))
            d.append(varsEsta)
            conteo = conteo + 1
        #else:
        #    print("No se puede calcular la variación para la estacion ", estacion.codigo.values[0])
    # end FOR
    print("procesados ", conteo, "\n\n")
    return d  #Fin funcion del archivo variaciones de tablas de estremas
Beispiel #5
0
def unirVariacion(codE, añoini, añofin, tabla, norm, extr, tempe):
    normal = gNor.SerieController(cfg)
    if extr == True:
        serie = normal.getSerieDos(codE, añoini, añofin, tabla)
    else:
        serie = normal.getSerie(codE, añoini, añofin, tabla)
    tama = añofin - añoini + 1
    tamS = serie.__len__()
    varia = []
    for i in range(0, tama):
        temFram = serie.loc[serie['anio'] == (añoini + i)]
        if temFram.__len__() > 0:
            if tempe == True:
                varia.extend(var.Variacion().variacionInstant(
                    norm, temFram.iloc[0][2:]))
            else:
                varia.extend(var.Variacion().varicionAgrega(
                    norm, temFram.iloc[0][2:]))
        else:
            vacio = np.empty(12)
            vacio[:] = np.nan
            varia.extend(vacio)
    return varia
Beispiel #6
0
import numpy as np
from src.util import openConfig as cfgdb
from src.controller import estacionController as st, serieController as gNor

cfg = cfgdb.configDB()

cfg.readConfig("/home/drosero/Documentos/.drvmysql.cnf")
años = [
    1973, 1974, 1975, 1976, 1988, 1989, 2004, 2005, 2006, 2008, 2009, 2010,
    2011, 2012
]

normal = gNor.SerieController(cfg)
serie = normal.getSerie('M0024', 2015, 2017, 'V0001')

for i in range(0, len(años)):
    print(años[i], type(años[i]))

serieT = normal.getSerieTrim('M0024', 2015, 2017, 'V0001')
#print(serie)
print("Serie T \n", serieT)
Beispiel #7
0
def getTrimes(codE, años, tabla):
    trim = []
    normal = gNor.SerieController(cfg)
    for i in range(0, len(años)):
        trim.extend(normal.getSerieTrim(codE, años[i], años[i], tabla))
    return trim