Beispiel #1
0
 def regrid(self,
            grid,
            method='auto',
            mask=True,
            id=None,
            long_name=None,
            **kwargs):
     """Regrid bathy to another grid"""
     return regrid2d(self.bathy(mask=mask, id=id, long_name=long_name),
                     grid,
                     method=method,
                     **kwargs)
xco = N.linspace(xi[0], xi[-1], nxo)
yco = N.linspace(yi[0], yi[-1], nyo)
gridco = rotate_grid((xco, yco), -20)

# Interpolate and Plot
# - original
rc('font', size=8)
rc('axes', labelsize=7)
kw = dict(show=False, axes_aspect=1, colorbar=False, grid=False)
kwg = dict(edges=False, centers=True, markersize=2, alpha=1)
ip = 1
plot2d(varri, title='Original rectangular', figure=10,
    figsize=(7, 7), subplot=(4,3,ip), **kw);ip+=1
plot2d(varci, title='Original curvilinear', subplot=(4,3,ip), **kw);ip+=1
# - nearest
varo = regrid2d(varci, gridco, method='nearest', tool='vacumm')
plot2d(varo, title='VACUMM / Nearest', subplot=(4,3,ip), **kw);ip+=1
add_grid(gridci, **kwg)
# - bilin r2r / vacumm
varo = regrid2d(varri, gridro, method='bilinear', tool='vacumm')
plot2d(varo, title='VACUMM / Bilinear', subplot=(4,3,ip), **kw);ip+=1
add_grid(gridri, **kwg)
# - bilin c2c / vacumm
varo = regrid2d(varci, gridco, method='bilinear', tool='vacumm')
plot2d(varo, title='VACUMM / Bilinear', subplot=(4,3,ip), **kw);ip+=1
add_grid(gridci, **kwg)
# - bilin c2c / emsf
varo = regrid2d(varci, gridco, method='bilinear', tool='esmf')
plot2d(varo, title='ESMF / Bilinear', subplot=(4,3,ip), **kw);ip+=1
add_grid(gridci, **kwg)
# - bilin c2c / libcf
Beispiel #3
0
# Création de bathymétries fictives à partir de Smith and Sandwell
import cdms2
from vacumm.config import data_sample
cdms2.axis.longitude_aliases.append('x')
cdms2.axis.latitude_aliases.append('y')
f = cdms2.open(data_sample('ETOPO2v2g_flt.grd'))
# - large
var_large = f('z', lon=(-7, -1), lat=(46, 49))
# - petite
var_small = f('z', lon=(-4.5, -.5), lat=(44.5, 46.5))
f.close()
# - regrillage de la large vers une grille moins fine
from vacumm.misc.grid import regridding, resol, create_grid
xr, yr = resol(var_large.getGrid())
grid_large = create_grid((-7., -1, xr * 4.5), (46., 49, yr * 4.5))
var_large = regridding.regrid2d(var_large, grid_large)

# On ajoute un traît de côte pour le masquage
from vacumm.bathy.bathy import GriddedBathy, GriddedBathyMerger
bathy_large = GriddedBathy(var_large, shoreline='i')
bathy_small = var_small

# Création de la grille finale de résolution intermédiaire
final_grid = create_grid((-6., .5, xr * 2.5), (45, 47., yr * 2.5))

# On crée maintenant le merger
merger = GriddedBathyMerger(final_grid)
# - ajout de la bathy basse resolution en premier (en dessous)
merger += bathy_large
# - puis ajout de celle haute résolution
merger += bathy_small
# -*- coding: utf8 -*-
from vacumm.misc.grid.regridding import regrid2d
import MV2
from vacumm.misc.grid import create_grid
from vacumm.misc.plot import map2 as map
import pylab as P
gmax=40
ggi = create_grid((0., gmax, 1.), (0., gmax, 1.))
ggo = create_grid((0.01, gmax, .5), (0.01, gmax, .5))

vari = MV2.reshape(MV2.arange(ggi.size(), dtype='f'), ggi.shape)
vari.setGrid(ggi)
varo = regrid2d(vari, ggo, 'bilinear')
map(varo, clabel_glow=True, resolution=None, show=False, savefigs=__file__)
# Affectation de la grille curvilineaire à la variable
from vacumm.misc.grid import curv_grid, set_grid
cgridi = curv_grid(lon2d, lat2d)
hs = set_grid(hs, cgridi)

# Rotation de la grid
from vacumm.misc.grid import rotate_grid
import numpy as N
cgrido = rotate_grid(hs.getGrid(), -30)


print 'Regrillage'
from vacumm.misc.grid.regridding import regrid2d
print ' - par natgrid'
hs_nat = regrid2d(hs, cgrido, 'nat')
print ' - par SCRIP/conservative'
hs_scripcons = regrid2d(hs, cgrido, 'conservative')
print ' - par SCRIP/bilineaire'
hs_scripbilin = regrid2d(hs, cgrido, 'bilinear')


print 'Plots'
from matplotlib import rcParams ; rcParams['font.size'] = 10
import pylab as P
from vacumm.misc.plot import map2, savefigs, xhide, yhide, add_grid
P.figure(figsize=(6.5, 5))
P.subplots_adjust(hspace=.28, bottom=.07, left=.08, right=.98)
kwplot = dict(show=False, colorbar=False, vmin=hs.min(), vmax=hs.max(), 
    drawparallels_size=8, drawmeridians_size=8, drawmeridians_rotation=45.)
m = map2(hs, title='Original', subplot=221, xhide=1,**kwplot)
# -*- coding: utf8 -*-
from vacumm.misc.grid.regridding import regrid2d
import MV2
from vacumm.misc.grid import create_grid
from vacumm.misc.plot import map2 as map
import pylab as P
gmax=40
ggi = create_grid((0., gmax, 1.), (0., gmax, 1.))
ggo = create_grid((0.01, gmax, .5), (0.01, gmax, .5))

vari = MV2.reshape(MV2.arange(ggi.size(), dtype='f'), ggi.shape)
vari.setGrid(ggi)
varo = regrid2d(vari, ggo, 'bilinear')
map(varo, clabel_glow=True, resolution=None, show=False, savefigs=__file__,
    close=True)
# Affectation de la grille curvilineaire à la variable
from vacumm.misc.grid import curv_grid, set_grid
cgridi = curv_grid(lon2d, lat2d)
hs = set_grid(hs, cgridi)

# Rotation de la grid
from vacumm.misc.grid import rotate_grid
import numpy as N
cgrido = rotate_grid(hs.getGrid(), -30)


print 'Regrillage'
from vacumm.misc.grid.regridding import regrid2d
print ' - par SCRIP/conservative'
hs_scripcons = regrid2d(hs, cgrido, 'conservative')
print ' - par SCRIP/bilineaire'
hs_scripbilin = regrid2d(hs, cgrido, 'bilinear')


print 'Plots'
from matplotlib import rcParams ; rcParams['font.size'] = 10
import pylab as P
from vacumm.misc.plot import map2, savefigs, xhide, yhide, add_grid
P.figure(figsize=(4, 7))
P.subplots_adjust(hspace=.28, bottom=.07, left=.08, right=.98)
kwplot = dict(show=False, colorbar=False, vmin=hs.min(), vmax=hs.max(),
    drawparallels_size=8, drawmeridians_size=8, drawmeridians_rotation=45.,
    xhide='auto',  yhide='auto')
m = map2(hs, title='Original', subplot=311, **kwplot)
add_grid(cgrido, lw=.7, alpha=.3)
Beispiel #8
0
yco = N.linspace(yi[0], yi[-1], nyo)
gridco = rotate_grid((xco, yco), -20)

# Interpolate and Plot
# - original
rc("font", size=8)
rc("axes", labelsize=7)
kw = dict(show=False, axes_aspect=1, colorbar=False, grid=False, linewidth=0.3)
kwg = dict(edges=False, centers=True, markersize=2, alpha=1)
ip = 1
plot2d(varri, title="Original rectangular", figure=10, figsize=(7, 7), subplot=(4, 3, ip), **kw)
ip += 1
plot2d(varci, title="Original curvilinear", subplot=(4, 3, ip), **kw)
ip += 1
# - nearest
varo = regrid2d(varci, gridco, method="nearest", tool="vacumm")
plot2d(varo, title="VACUMM / Nearest", subplot=(4, 3, ip), **kw)
ip += 1
add_grid(gridci, **kwg)
# - bilin r2r / vacumm
varo = regrid2d(varri, gridro, method="bilinear", tool="vacumm")
plot2d(varo, title="VACUMM / Bilinear", subplot=(4, 3, ip), **kw)
ip += 1
add_grid(gridri, **kwg)
# - bilin c2c / vacumm
varo = regrid2d(varci, gridco, method="bilinear", tool="vacumm")
plot2d(varo, title="VACUMM / Bilinear", subplot=(4, 3, ip), **kw)
ip += 1
add_grid(gridci, **kwg)
# - bilin c2c / emsf
varo = regrid2d(varci, gridco, method="bilinear", tool="esmf")
# Création de bathymétries fictives à partir de Smith and Sandwell
import cdms2
from vacumm.config import data_sample
cdms2.axis.longitude_aliases.append('x')
cdms2.axis.latitude_aliases.append('y')
f = cdms2.open(data_sample('ETOPO2v2g_flt.grd'))
# - large
var_large = f('z', lon=(-7, -1), lat=(46, 49))
# - petite
var_small = f('z', lon=(-4.5, -.5), lat=(44.5, 46.5))
f.close()
# - regrillage de la large vers une grille moins fine
from vacumm.misc.grid import regridding, resol, create_grid
xr, yr = resol(var_large.getGrid())
grid_large = create_grid((-7., -1, xr*4.5), (46., 49, yr*4.5))
var_large = regridding.regrid2d(var_large, grid_large)

# On ajoute un traît de côte pour le masquage
from vacumm.bathy.bathy import GriddedBathy, GriddedBathyMerger
bathy_large = GriddedBathy(var_large, shoreline='i')
bathy_small = var_small

# Création de la grille finale de résolution intermédiaire
final_grid = create_grid((-6., .5, xr*2.5), (45, 47., yr*2.5))

# On crée maintenant le merger
merger = GriddedBathyMerger(final_grid)
# - ajout de la bathy basse resolution en premier (en dessous)
merger += bathy_large
# - puis ajout de celle haute résolution
merger += bathy_small