From e723c28c0aab44357516b282846fa4b441af1de3 Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Fri, 29 Sep 2023 15:20:28 +0200 Subject: python module restructure --- horizontal.py | 113 ---------------------------------------------------------- 1 file changed, 113 deletions(-) delete mode 100755 horizontal.py (limited to 'horizontal.py') diff --git a/horizontal.py b/horizontal.py deleted file mode 100755 index a81b372..0000000 --- a/horizontal.py +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/env python3 -import os -import json - -import xarray as xr - -import numpy as np -from metpy.plots import MapPanel, PanelContainer, RasterPlot, ContourPlot - -import misc - -config = { - 'source': 'dwd_icon-eu/combined.grib2', - 'plots': [ - { - 'name':'r_t-750', - 'area': None, - 'layers': [ - { - 'layertype': 'raster', - 'field': 'r', - 'level': 750, - }, - { - 'layertype': 'contour', - 'field': 't', - 'level': 750, - 'contours': 5, - 'clabels': True - }, - ] - }, - ] -} - -def run(source, plots, output='.'): - misc.create_output_dir(output) - data = xr.load_dataset(source, engine='cfgrib') - - for plot in plots: - _plot(data, output, **plot) - -def _plot(data, output, name, layers, area = None): - index = [] - - for step in data.coords['step']: - this_step = data.sel(step=step) - - map_layers = [] - - for layer in layers: - map_layers.append(_layer(this_step, **layer)) - - valid = misc.np_time_convert(step.valid_time.values) - init = misc.np_time_convert(step.time.values) - - valid_str = valid.strftime('%d %b %Y - %HUTC') - init_str = init.strftime('%d %b %Y - %HUTC') - hours_since_init_str = str(int(this_step.step.values / np.timedelta64(1,'h'))).zfill(2) - init_for_filename = init.strftime('%Y-%m-%d-%HUTC') - - panel = MapPanel() - if area is not None: - panel.area = area - panel.projection = 'mer' - panel.layers = ['coastline', 'borders'] - panel.plots = map_layers - panel.left_title = f'{name} VALID: {valid_str} (INIT +{hours_since_init_str}) INIT: {init_str}' - panel.right_title = 'FORECAST DWD ICON-EU' - - pc = PanelContainer() - pc.size = (12.8, 9.6) - pc.panels = [panel] - pc.draw() - #pc.show() - outname = f'{name}_{init_for_filename}+{hours_since_init_str}.png' - pc.save(os.path.join(output, outname)) - - index.append( - { - 'file': outname, - 'init': init_str, - 'valid': valid_str, - 'valid_offset': hours_since_init_str - } - ) - - with open(os.path.join(output, f'{name}.index.json'), 'w') as f: - f.write(json.dumps(index, indent=4)) - -def _layer(data, layertype, **kwargs): - layertypes={ - 'raster': { - 'obj': RasterPlot, - 'defaults': { - 'colorbar': 'vertical', - } - }, - 'contour': { - 'obj': ContourPlot, - 'defaults': {} - } - } - - args = layertypes[layertype]['defaults'] | kwargs - - ret = layertypes[layertype]['obj'](**args) - ret.data = data - - return ret - -if __name__ == '__main__': - run(**config) -- cgit v1.2.3