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