-
Notifications
You must be signed in to change notification settings - Fork 0
/
fiu_ecmwf.py
74 lines (62 loc) · 2.14 KB
/
fiu_ecmwf.py
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import pygrib
import numpy as np
import pandas as pd
import datetime as dt
#import geopandas as gpd
## COORDENADAS ÁREA DE ESTUDO
# area = gpd.read_file('../Teste/Fiu_area.gpkg')
# minx = area.bounds.minx
# maxx = area.bounds.maxx
# miny = area.bounds.miny
# maxy = area.bounds.maxy
minx = -51.266685
maxx = -50.933458
miny = -23.925056
maxy = -23.69154
## INICIALIZA DATA FRAME VAZIO
df = pd.DataFrame(columns = [1])
df.index.name = 'Horizonte'
## DIA DISPARO (MODIFICAR PARA DATETIME TODAY)
# hoje = dt.date.today()
# ano = hoje.year
# mes = hoje.month
# dia = hoje.day
ano = 2021
mes = 1
dia = 1
dispara = dt.datetime(ano, mes, dia, 00)
## INSERIR LOOP PARA RANGE DE HORIZONTES (HORAS A FRENTE DE PREVISAO)
horizonte = 1
previsao = dispara + dt.timedelta(hours = horizonte)
mesprev = previsao.month
diaprev = previsao.day
horaprev = previsao.hour
## LEITURA DO ARQUIVO GRIB - 1 HORIZONTE DE PREVISÃO - ENSEMBLE COM N DADOS
#endereco no servidor do Simepar
#grbfile = f"/simepar/modelos/ecmwf/ens/{ano:04d}/{mes:02d}/{dia:02d}/00/D1X{mes:02d}{dia:02d}0000{mesprev:02d}{diaprev:02d}{horaprev:02d}001"
grbfile = f"../dados/D1X{mes:02d}{dia:02d}0000{mesprev:02d}{diaprev:02d}{horaprev:02d}001"
grbs = pygrib.open(grbfile)
# grbs[1].data(lat1=miny, lat2=maxy, lon1=minx, lon2=maxx)
## CORTE DO ARQUIVO PELA ÁREA E MÉDIA DO VALOR PARA CADA PREVISÃO DO ENSEMBLE
for N in range(0, 51):
membro = grbs.select(perturbationNumber=N)
for i in [0,1]:
data, lats, lons = membro[i].data(lat1=miny, lat2=maxy, lon1=minx, lon2=maxx)
if data.size == 0:
continue
p = np.mean(data) #media da precipitacao entre os pontos
df.loc[horizonte,N] = p
df
grbfile = '/Users/brunojuliani/github/WRFPOS_DASSE5km.op05_2021-03-02T000000_2021-03-02T010000.grib2'
grbs = pygrib.open(grbfile)
wrf = grbs.select(name = 'Total Precipitation')
wrf = grbs.select(name = 'Total Precipitation')
data, lats, lons = wrf[0].data(lat1=miny, lat2=maxy, lon1=minx, lon2=maxx)
data2 = np.hstack(data)
data2
grbfile = f"../Fiu/D1E03300000033001001.grib2"
grbs = pygrib.open(grbfile)
membro = grbs.select(perturbationNumber=0)
membro
data, lats, lons = membro[0].data()
lons