from IPython.core.display import HTML
HTML('')
import datetime as dt
import time
import iris
def time_near(cube,start):
# coord_names = [coord.name() for coord in cube.coords()]
# timevar = cube.coord(coord_names[0]))
timevar=cube.coord('time')
try:
itime = timevar.nearest_neighbour_index(timevar.units.date2num(start))
except:
itime = -1
return timevar.points[itime]
def var_lev_date(url=None,var=None,mytime=None,lev=0,subsample=1):
time0=time.time()
cubes = iris.load(url)
cube = cubes.extract(iris.Constraint(name=var.strip()))[0]
try:
cube.coord(axis='T').rename('time')
except:
pass
slice = cube.extract(iris.Constraint(time=time_near(cube,mytime)))
slice = slice[lev,::subsample,::subsample]
print 'slice retrieved in %f seconds' % (time.time()-time0)
return slice
def myplot(slice,model=None):
# make the plot
figure(figsize=(12,8))
lat=slice.coord(axis='Y').points
lon=slice.coord(axis='X').points
time=slice.coord('time')[0]
subplot(111,aspect=(1.0/cos(mean(lat)*pi/180.0)))
pcolormesh(lon,lat,ma.masked_invalid(slice.data));
colorbar()
grid()
date=time.units.num2date(time.points)
date_str=date[0].strftime('%Y-%m-%d %H:%M:%S %Z')
plt.title('%s: %s: %s' % (model,slice.long_name,date_str));
# use contraints to select nearest time
#mytime=dt.datetime(2008,7,28,12) #specified time...
mytime=dt.datetime.utcnow() # .... or now
model='USGS/COAWST'
url='http://geoport.whoi.edu/thredds/dodsC/coawst_4/use/fmrc/coawst_4_use_best.ncd'
var='potential temperature'
lev=-1
slice=var_lev_date(url=url,var=var, mytime=mytime, lev=lev, subsample=1)
myplot(slice,model=model)
model='MARACOOS/ESPRESSO'
url='http://tds.marine.rutgers.edu/thredds/dodsC/roms/espresso/2009_da/his'
var='potential temperature'
lev=-1
slice=var_lev_date(url=url,var=var, mytime=mytime, lev=lev)
myplot(slice,model=model)
model='SECOORA/NCSU'
url='http://omgsrv1.meas.ncsu.edu:8080/thredds/dodsC/fmrc/sabgom/SABGOM_Forecast_Model_Run_Collection_best.ncd'
var='potential temperature'
lev=-1
slice=var_lev_date(url=url,var=var, mytime=mytime, lev=lev)
myplot(slice,model=model)
model='CENCOOS/UCSC'
url='http://oceanmodeling.pmc.ucsc.edu:8080/thredds/dodsC/ccsnrt/fmrc/CCSNRT_Aggregation_best.ncd'
var='potential temperature'
lev=-1
slice=var_lev_date(url=url,var=var, mytime=mytime, lev=lev)
myplot(slice,model=model)
model='HIOOS'
url='http://oos.soest.hawaii.edu/thredds/dodsC/hioos/roms_assim/hiig/ROMS_Hawaii_Regional_Ocean_Model_Assimilation_best.ncd'
var='sea_water_potential_temperature'
lev=-1
slice=var_lev_date(url=url,var=var, mytime=mytime, lev=lev)
myplot(slice,model=model)
model='Global RTOFS/NCEP'
url='http://ecowatch.ncddc.noaa.gov/thredds/dodsC/hycom/hycom_reg1_agg/HYCOM_Region_1_Aggregation_best.ncd'
var='sea_water_temperature'
lev=1
subsample=1
slice=var_lev_date(url=url,var=var, mytime=mytime, lev=lev, subsample=subsample)
myplot(slice,model=model)
# this is not a forecast model, but test it anyway
model='TAMU/TXLA'
url='http://barataria.tamu.edu:8080/thredds/dodsC/NcML/txla_nesting6.nc'
var=u'salinity'
lev=-1
subsample=1
slice=var_lev_date(url=url,var=var, mytime=mytime, lev=lev, subsample=subsample)
myplot(slice,model=model)
cubes = iris.load(url)
print cubes