示例#1
0
def gen_REAV(fechas=[
    dt.datetime.strftime(dt.datetime.utcnow() - dt.timedelta(hours=24),
                         '%Y-%m-%d %H:%M'),
    dt.datetime.utcnow().strftime("%Y-%m-%d %H:%M")
],
             ML=">1.5",
             ms=2,
             anchomap=40):
    """Genera un REAV semiautomático (guardado en el directorio de trabajo), basándose en la búsqueda de eventos del último día LOCALIZADOS
    
    :param fechas: Par [fecha inicial,fecha final], por defecto busca en las últimas 24 horas
    :type fechas: [str,str], opcional
    :param ML: Magnitud local mínima para la búsqueda de eventos. Por defecto busca eventos con ML>1.5
    	:type ML: float, opcional
    :param ms: Factor de escala para el símbolo (circulito) de la localización, por defecto=4
    :type ms: float, opcional
    :param anchomap: Extensión de ancho del mapa ploteado. Por defecto = 80 km
    :type anchomap: float, opcional
    :returns: Documento .doc
    
    :Ejemplo:
    
    >>> import sys
    >>> sys.path.append('//172.16.40.10/Sismologia/pyOvdas_lib/')
    >>> import ovdas_reportes_scripts as reportes
    >>> reportes.gen_REAV(fechas=["2019-12-01T00:00","2019-12-05T00:00"],ML=2.0,ms=3,anchomap=40)
    >>> 
    0 - Tatara, VT con ML: 2.3 (201912020039)
    1 - Nevados de Chillan, LP con ML: 3.4 (201912011618)
    2 - Nevados de Chillan, EX con ML: 3.4 (201912011529)
    Seleccione el evento:
    >>> 1
    Mapa generado, en proceso etapa de generación de DOC
    	
    
    """
    #cargar los eventos del ultimo dia con ML>1.5
    import ovdas_getfromdb_lib as gdb
    import ovdas_figure_lib as ffig
    import ovdas_doc_lib as doc
    import ovdas_formulas_lib as formu
    import pandas as pd
    a = gdb.extraer_eventos(inicio=fechas[0],
                            final=fechas[1],
                            ML=ML,
                            volcan='*')

    volcanes_data = gdb.volc_metadata(volc='all')
    #permitir seleccionar uno
    i = 0
    a = pd.DataFrame(a)
    a.reset_index()
    print(a)
    for index, row in a.iterrows():
        print(
            str(i) + " - " +
            volcanes_data[volcanes_data.id == row.idvolc].nombre_db.iloc[0])
        i = i + 1
    '''
示例#2
0
def localizar_NLL(idev,year,realtime=True,fini='',ffin=''):
    VpVs=1.78
    yNum,zNum=2000,1050
    ro = 2.7 #Densidad
    gridsize = 0.1 #Initial cell size in km
    signature = 'Sergi'
    import sys
    import pandas as pd
    pd.options.mode.chained_assignment = None  # default='warn'
    sys.path.append('//172.16.40.10/sismologia/pyovdas_lib/')
    import ovdas_getfromdb_lib as gdb
    import datetime as dt
    VpVs=1.78
    yNum,zNum=2000,1050
    ro = 2.7 #Densidad
    gridsize = 0.1 #Initial cell size in km
    signature = 'Sergi'
    if realtime==True:
        fini = dt.datetime.strftime(dt.datetime.utcnow() - dt.timedelta(days=1), '%Y-%m-%d')
        ffin = dt.datetime.strftime(dt.datetime.utcnow() + dt.timedelta(days=1), '%Y-%m-%d')
    
        
    #ev = pd.DataFrame(gdb.extraer_eventos(inicio=fini,final=ffin,ml='>0',volcan='*')).tail(1)
    ev = pd.DataFrame(gdb.extraer_eventos(inicio=fini,final=ffin,ml='>0',volcan='*'))
    ev = ev[ev.idevento==idev]
    ev = ev[ev.fecha.dt.year==year]
    
    evsel=ev
    
    
    from pylib.func_main import pyNLL
    from obspy import read_events
    hypo, NLL,voldf = pyNLL(yNum,zNum,gridsize,VpVs,ro,evsel,signature)
    cat = read_events("loc/last.hyp") 
    
    lonN=cat[0].origins[0].longitude
    latN=cat[0].origins[0].latitude
    profN=cat[0].origins[0].depth/1000
    erlonN = cat[0].origins[0].longitude_errors.uncertainty
    erlatN = cat[0].origins[0].latitude_errors.uncertainty
    erzN=cat[0].origins[0].depth_errors.uncertainty/1000
    volnet = gdb.get_metadata_wws(volcan='*')
    volnet = volnet[volnet.tipo=='SISMOLOGICA']
    estas,fases =[],[]
    for i in range(0,len(cat[0].picks)):
        esta = cat[0].picks[i].waveform_id.station_code
        fase = cat[0].picks[i].phase_hint
        estas.append(esta[:-1])
        fases.append(fase)
    estadf = pd.DataFrame([estas,fases]).T
    NLL=[latN,lonN,profN,erlonN,erlatN,erzN]
    return NLL,estadf,hypo,evsel,voldf
示例#3
0
Created on Mon Apr 19 09:16:29 2021

@author: sergio.morales
"""
fini = '2018-02-01'
ffin = '2018-12-31'

import sys
import os
import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'
sys.path.append('//172.16.40.10/sismologia/pyovdas_lib/')
import ovdas_getfromdb_lib as gdb
import datetime as dt
evs = pd.DataFrame(
    gdb.extraer_eventos(inicio=fini, final=ffin, volcan='*', ml='>0'))

realtime = False
for i in range(0, len(evs)):
    raiz = '//172.16.40.102/Monitoreo/Procesamiento/autoNLLoc/'
    ev = evs[evs.index == i]
    from autoNLL_do import localizar_NLL
    idev = ev.idevento.iloc[0]
    year = ev.fecha.iloc[0].year
    try:
        NLL, estadf, hypo, ev, voldf = localizar_NLL(idev, year, realtime,
                                                     fini, ffin)

        volcan = voldf.nombre_db.iloc[0]
        fecha = str(ev.fecha.dt.year.iloc[0]) + str(
            ev.fecha.dt.month.iloc[0]).zfill(2) + str(
示例#4
0
def do(fecha):
    raiz = '//172.16.40.102/Monitoreo/Procesamiento/autoNLLoc/'

    import sys
    import os
    from autoNLL_do import localizar_NLL
    import pandas as pd
    pd.options.mode.chained_assignment = None  # default='warn'
    sys.path.append('//172.16.40.10/sismologia/pyovdas_lib/')
    import ovdas_getfromdb_lib as gdb
    import datetime as dt
    fini = dt.datetime.strftime(dt.datetime.utcnow() - dt.timedelta(days=1),
                                '%Y-%m-%d')
    ffin = dt.datetime.strftime(dt.datetime.utcnow() + dt.timedelta(days=1),
                                '%Y-%m-%d')
    #ev = pd.DataFrame(gdb.extraer_eventos(inicio=fini,final=ffin,ml='>0',volcan='*')).tail(1)
    ev = pd.DataFrame(
        gdb.extraer_eventos(inicio=fini, final=ffin, volcan='*',
                            ml='>0')).tail(1)
    last_loc_hypo = str(ev['idevento'].iloc[0]) + '-' + str(
        ev.fecha.iloc[0].year)
    print("Último evento localizado por Hypo: " + last_loc_hypo)
    last_loc_NLL = open('lastloc.txt').read().splitlines()[0]
    print("Último evento localizado por NLL:  " + last_loc_NLL)
    try:
        with open("lastloc.txt", "w") as text_file:
            print(f"{last_loc_hypo}", file=text_file)
        if last_loc_hypo == last_loc_NLL:
            print('No hay eventos nuevos localizados')
        else:
            print('A localizar!')
            idev = ev.idevento.iloc[0]
            year = ev.fecha.dt.year.iloc[0]
            NLL, estadf, hypo, ev, voldf = localizar_NLL(idev, year)
            #plot_ev(estadf, NLL, hypo, ev)

            volcan = voldf.nombre_db.iloc[0]
            fecha = str(ev.fecha.dt.year.iloc[0]) + str(
                ev.fecha.dt.month.iloc[0]).zfill(2) + str(
                    ev.fecha.dt.day.iloc[0]).zfill(2)
            #Guardar
            file = fecha + '_' + volcan + "_NLLoc.csv"
            row = (str(ev.fecha.iloc[0]) + ' ' + str(NLL[0]) + ' ' +
                   str(NLL[1]) + ' ' + str(NLL[2]) + ' ' + str(NLL[3]) + ' ' +
                   str(NLL[4]) + ' ' + str(NLL[5]) + ' ' +
                   str(ev.tipoevento.iloc[0]) + ' ' +
                   str(ev.idevento.iloc[0]) + '-' + str(ev.fecha.iloc[0].year))
            df = pd.DataFrame([row])
            raiz = raiz + str(ev.fecha.dt.year.iloc[0]) + '/' + str(
                ev.fecha.dt.month.iloc[0]).zfill(2) + '/' + str(
                    ev.fecha.dt.day.iloc[0]).zfill(2) + '/'
            if (os.path.exists(raiz + file) == True):
                df.to_csv(raiz + file,
                          sep=';',
                          index=False,
                          mode='a',
                          header=False)
            else:
                df.to_csv(raiz + file, sep=';', index=False, header=False)

                #file = open("evlocs/"+str(idev)+'-'+str(year)+".txt", "w")
                #row = str(NLL[0])+' '+str(NLL[1])+' '+str(NLL[2])+' '+str(NLL[3])+' '+str(NLL[4])+' '+str(NLL[5])
                #file.write(row)
                #file.close()
    except:
        print('Problema con el lastloc.txt, se intentará nuevamente')
示例#5
0
        3: 'lonN',
        4: 'profN',
        5: 'erlonN',
        6: 'erlatN',
        7: 'erprofN',
        8: 'tipoev',
        9: 'id-year'
    })
df_N = df_N.set_index('id-year', drop=True)
df_N = df_N[~df_N.index.duplicated(keep='first')]
ffin = dt.datetime.strftime(fin + dt.timedelta(days=1), '%Y-%m-%d')
fini = dt.datetime.strftime(ini, '%Y-%m-%d')
df_H = pd.DataFrame(
    gdb.extraer_eventos(inicio=fini,
                        final=ffin,
                        volcan=volcan,
                        ml='>0',
                        tipoevento='VT'))
df_H['id-year'] = df_H.idevento.astype(str) + '-' + df_H.fecha.dt.year.astype(
    str)
df_H = df_H.set_index('id-year', drop=True)
df_H['profH'] = voldf.nref.iloc[0] / 1000 - df_H['profundidad']
M = pd.concat([df_N, df_H], axis=1)
del df_H, df_N, df, df2, df3
M = M[M['hora'].notnull()]
M = M[M['cod'].notna()]
#%%
volnet = gdb.get_metadata_wws(volcan=volcan)
volnet = volnet[volnet.tipo == 'SISMOLOGICA']

#%%