ARPA-SIMC / arkimaps

generazione mappe meteorologiche da modelli previsionali
GNU General Public License v2.0
0 stars 1 forks source link

Rendering: Maximum wind gust speed #40

Closed brancomat closed 3 years ago

brancomat commented 3 years ago

sigla : wmax

nota: pur riguardando il vento qui viene plottata solo un valore massimo in m/s (leggi: non sono componenti separate u/v, si usa mcont e non mwind)

variabili necessarie: GRIB1,98,228,28 (IFS-ECMWF) GRIB1,,201,187 (COSMO) entrambe associate a level tipo GRIB1,100,500 (livello di pressione, tipicamente 250, 500, 700, 850)

contouring (isotache)

"contour" : "off",
"contour_shade" : "on",
"contour_level_selection_type" : "list",
"contour_shade_colour_method" : "list",
"contour_shade_method" : "area_fill",
"contour_shade_colour_list" : ["green", "yellow", "orange", "red"],
"contour_level_list" : [13.9, 17.1, 20.6, 24.2, 70.0],
"contour_highlight" : "off",
"contour_hilo" : "off",
"legend":"on"
spanezz commented 3 years ago

Ho aggiunto la ricetta, per favore assaggia e dimmi se è lei

brancomat commented 3 years ago

Mi sa che c'è stato un misunderstanding: mcont era il nome della function magics, ho corretto gli shortname delle variabili.

Ho confrontato i plot con quelli operativi, l'unica cosa che resta da sistemare è il ritaglio sulle linee di costa che in questo caso specifico non sarebbe da fare, ri-approfondirò con l'anno nuovo

spanezz commented 3 years ago

Preparando un unit test per questa ricetta, ho notato una discrepanza: filtrando con arkimet, pantry/wmax/any_mcont+12.grib contiene:

edition      centre       typeOfLevel  level        dataDate     stepRange    shortName    packingType  gridType     
1            cnmc         heightAboveGround  10           20210110     12-13        vmax_10m     grid_simple  rotated_ll  

Mentre filtrando con eccodes contiene:

edition      centre       typeOfLevel  level        dataDate     stepRange    shortName    packingType  gridType     
1            cnmc         heightAboveGround  10           20210110     11-12        vmax_10m     grid_simple  rotated_ll  

Quindi sembrerebbe che cambiando il metodo di dispatch, venga shiftato tutto di un'ora.

La regola che viene scritta per eccodes è:

if ( {i.eccodes} ) {
    write "{recipe_dir}/{i.name}_{name}+[endStep].grib";
}

Mentre per arkimet uso:

trange = md.to_python("timerange")
output_step = trange['p1']
source = md.to_python("source")

dest = os.path.join(recipe_dir, f"{inp.name}_{name}+{output_step}.{source['format']}")

Evidentemente non sono equivalenti :)

Qualcuno mi aiuta a trovare quale possa essere il modo giusto di smistare gli input per step nei casi arkimet ed eccodes?

spanezz commented 3 years ago

Per riprodurlo velocemente si può provare a fare dispatch con --filter=arkimet e --filter=eccodes su due workdir diverse, usando come input: input.tar.gz

spanezz commented 3 years ago

Con ifs invece, il filtro eccodes lascia una pantry vuota. Dato di test: ifs.tar.gz

brancomat commented 3 years ago

Magari dico un cagatone (@dcesari e @edigiacomo bastonatemi se sbaglio) ma quello che per eccodes è endStep, per il timerange non è il p2? (edit: in caso di cumulata, media o max/min)

Segue esempio empirico:

[branco@kinotto buttami]$ arki-query --data 'Reftime:=today 0:00;product:GRIB1,,201,187;timerange:GRIB1,,11h,12h' http://arkiope.metarpa:8090/dataset/cosmo_5M_ita > wmax.grib
[branco@kinotto buttami]$ grib_ls wmax.grib 
wmax.grib
edition      centre       typeOfLevel  level        dataDate     stepRange    shortName    packingType  gridType     
1            cnmc         heightAboveGround  10           20210121     11-12        vmax_10m     grid_simple  rotated_ll  
1 of 1 messages in wmax.grib

1 of 1 total messages in 1 files
[branco@kinotto buttami]$ cat grib.filter
write "pippo+[endStep].grib";
[branco@kinotto buttami]$ grib_filter grib.filter wmax.grib 
[branco@kinotto buttami]$ ls pippo*
pippo+12.grib

ora approfondisco cos'ha ifs (ma ho qualche idea, devo aver fatto un replace di troppo)

brancomat commented 3 years ago

(confermo typo su filtro eccodes ifs)

integro risposta sopra alla luce di ripassino di https://apps.ecmwf.int/codes/grib/format/grib1/ctable/5/. Da quel che posso capire:

(volendo si può metterla giù anche come: "su Time range indicator da 0 a 7 piglia il più grande fra p1 e p2")

Sul resto delle casistiche esotiche per prudenza credo si possa anche tirare un crepone finché non salterà fuori l'esigenza di plottarle (che forse è meglio di prendere comunque di default il più grande fra p1 e p2 e plottarle male finché qualcuno non se ne accorge)

spanezz commented 3 years ago

Grande! Ora i conti tornano anche nei test. Chiudo l'issue