log.info(fmt(' Models '))
cubes = dict()
with warnings.catch_warnings():
    warnings.simplefilter("ignore")  # Suppress iris warnings.
    for k, url in enumerate(dap_urls):
        log.info('\n[Reading url {}/{}]: {}'.format(k+1, len(dap_urls), url))
        try:
            cube = quick_load_cubes(url, name_list,
                                    callback=None, strict=True)
            if is_model(cube):
                cube = proc_cube(cube, bbox=bbox,
                                 time=(start, stop), units=units)
            else:
                log.warning("[Not model data]: {}".format(url))
                continue
            cube = get_surface(cube)
            mod_name, model_full_name = get_model_name(cube, url)
            cubes.update({mod_name: cube})
        except (RuntimeError, ValueError,
                ConstraintMismatchError, CoordinateNotFoundError,
                IndexError) as e:
            log.warning('Cannot get cube for: {}\n{}'.format(url, e))


# In[17]:

from iris.pandas import as_series
from utilities import (make_tree, get_nearest_water,
                       add_station, ensure_timeseries, remove_ssh)

for mod_name, cube in cubes.items():
Esempio n. 2
0
cube.coord(axis='X').points[:20]

# <codecell>

# Just found a bug in proc_cube().  Meanwhile lets skip the constraint step.
cube.coord(axis='X').points = wrap_lon180(cube.coord(axis='X').points)

# <codecell>

cube.coord(axis='X').points[:20]

# <codecell>

# cube = proc_cube(cube, bbox=bbox, time=(start, stop), units=units)
cube = get_surface(cube)  # Get a 2D surface cube.  I am working on 3D...
cube

# <codecell>

from utilities import get_nearest_water, make_tree

obs = dict(lon=-77.7867, lat=34.2133)

tree, lon, lat = make_tree(cube)
kw = dict(k=10, max_dist=0.04, min_var=0.01)
series, dist, idx = get_nearest_water(cube, tree, obs['lon'], obs['lat'], **kw)

print('Distance (degrees): {}'.format(dist))
print('Indices: {!r}'.format(idx))