daystr=T[itime]
        tri = Tri.Triangulation(lons,lats)
        ilayer = 0      #0 is surface,-1 is bottom
        u = nc.variables['u'][itime, ilayer, :]   
        v = nc.variables['v'][itime, ilayer, :]   
        CX= [alon-7*one_minute,alon+7*one_minute,alat-7*one_minute,alat+7*one_minute] # box you want to plot
        subsample=2
        ind = argwhere((lonc >= CX[0]) & (lonc <= CX[1]) & (latc >= CX[2]) & (latc <= CX[3]))  # find velocity points in bounding box
        np.random.shuffle(ind)
        Nvec = int(len(ind) / subsample)
        idv = ind[:Nvec]
        indx=argwhere((lons >= CX[0]) & (lons <= CX[1]) & (lats >= CX[2]) & (lats <= CX[3]))  # find  points in bounding box
        #plot picture
        fig=plt.figure(figsize=(12,10))
        ax=fig.add_subplot(111)  #,aspect=(1.0/cos(mean(lat)*pi/180.0)))
        draw_basemap(fig, ax, lonsize, latsize,interval_lon=5*one_minute, interval_lat=5*one_minute)
        diff=int((max(h[indx])-min(h[indx]))/3)
        levels=arange(int(-max(h[indx]))-diff,int(-min(h[indx]))+diff,1)
        tricontourf(tri,-h,levels=levels,shading='faceted',cmap=plt.cm.gist_earth)
        gca().patch.set_facecolor('0.5')
        cbar=colorbar()
        cbar.set_label('Water Depth (m)')
        Q = quiver(lonc[idv],latc[idv],u[idv],v[idv],scale=10)
        maxvel =np.sqrt(np.max(abs(u[idv]))*np.max(abs(u[idv]))+np.max(abs(v[idv]))*np.max(abs(v[idv])))
        maxstr='%3.1f m/s' % maxvel
        qk = quiverkey(Q,0.92,0.08,maxvel,maxstr,labelpos='W')
        title('surface ,'+str(daystr)[0:-6]+'(local time)',fontsize=15)
        plt.savefig('/var/www/html/ioos/sf/fig/'+method+'.png')
    except:
        nc1='Model does`t work now'
if method=='Bottom temp':
Example #2
0
data=pd.read_csv('binned_td_FVCOM.csv')
lat,lon=dm2dd(data['LATITUDE'],data['LONGITUDE']) #convert ddmm.m to dd.ddd
lat_i=np.arange(min(lat),max(lat),one_minute)   
lon_i=np.arange(min(lon),max(lon),one_minute)
alat=lat_i[sites[0][1]]
alon=lon_i[sites[0][0]]
lonsize=[alon-20*one_minute,alon+20*one_minute]
latsize=[alat-20*one_minute,alat+20*one_minute] #basemap range
url='http://www.smast.umassd.edu:8080/thredds/dodsC/models/fvcom/NECOFS/Forecasts/NECOFS_GOM3_FORECAST.nc'
nc=netCDF4.Dataset(url)
lons=nc.variables['lon'][:]
lats=nc.variables['lat'][:] 
h = nc.variables['h'][:] 
tri = Tri.Triangulation(lons,lats) 
indx=argwhere((lons >= lonsize[0]) & (lons <= lonsize[1]) & (lats >= latsize[0]) & (lats <= latsize[1]))  # find  points in bounding box
#plot picture
fig=plt.figure(figsize=(12,10))
ax=fig.add_subplot(111)
draw_basemap(fig, ax, lonsize, latsize,interval_lon=10*one_minute, interval_lat=10*one_minute)
levels=arange(int(-max(h[indx])),0.1,0.5)
tricontourf(tri,-h,levels=levels,shading='faceted',cmap=plt.cm.rainbow)
gca().patch.set_facecolor('0.5')
cbar=colorbar()
cbar.set_label('Water Depth (m)')
ax.scatter(lon_i[sites[0][0]],lat_i[sites[0][1]],s=200,c='red',marker='*')
ax.scatter(lon_i[sites[1][0]],lat_i[sites[1][1]],s=200,c='red',marker='*')  #star site 1 and site 2
plt.annotate('site_1', xy=(lon_i[sites[0][0]], lat_i[sites[0][1]]),xytext=(lon_i[sites[0][0]],lat_i[sites[0][1]]-3*one_minute),arrowprops=dict(arrowstyle='->'),fontsize=12)
plt.annotate('site_2', xy=(lon_i[sites[1][0]], lat_i[sites[1][1]]),xytext=(lon_i[sites[1][0]],lat_i[sites[1][1]]-3*one_minute),arrowprops=dict(arrowstyle='->'),fontsize=12)
plt.title('Depth of site 1 and site 2',fontsize=20)
plt.show()
Example #3
0
 lon = nc.variables['lon'][j0:j1, i0:i1]
 lat = nc.variables['lat'][j0:j1, i0:i1]
 depth = -nc.variables['depth'][j0:j1, i0:i1]
 lon_inside, lat_inside, TEMP, H = [], [], [], []
 for i in range(len(temp)):
     for j in range(len(temp[i])):
         TEMP.append(temp[i][j])
         lon_inside.append(lon[i][j])
         lat_inside.append(lat[i][j])
         H.append(depth[i][j])
 tri = Tri.Triangulation(lon_inside, lat_inside)
 fig = plt.figure()
 ax = fig.add_subplot(111)
 draw_basemap(fig,
              ax,
              lonsize,
              latsize,
              interval_lon=0.1,
              interval_lat=0.1)
 levels = (np.arange(int(min(TEMP)), int(max(TEMP)) + 1.1, 0.2))
 h_start, h_end = round(min(H)), round(max(H))
 levels_h = np.arange(h_start, h_end, (h_end - h_start) / 10)
 levels_h = [int(i) for i in levels_h]
 cs = tricontourf(tri, TEMP, levels=levels, cmap=plt.cm.rainbow)
 cs_line = tricontour(tri,
                      H,
                      levels=levels_h,
                      linewidths=0.5,
                      colors='k')
 plt.clabel(cs_line,
            cs_line.levels,
            inline=1,
Example #4
0
     alon - 7 * one_minute, alon + 7 * one_minute,
     alat - 7 * one_minute, alat + 7 * one_minute
 ]  # box you want to plot
 subsample = 2
 ind = argwhere((lonc >= CX[0]) & (lonc <= CX[1]) & (latc >= CX[2]) &
                (latc <= CX[3]))  # find velocity points in bounding box
 np.random.shuffle(ind)
 Nvec = int(len(ind) / subsample)
 idv = ind[:Nvec]
 indx = argwhere((lons >= CX[0]) & (lons <= CX[1]) & (lats >= CX[2]) &
                 (lats <= CX[3]))  # find  points in bounding box
 fig = plt.figure(figsize=(12, 10))
 ax = fig.add_subplot(111)  #,aspect=(1.0/cos(mean(lat)*pi/180.0)))
 draw_basemap(fig,
              ax,
              lonsize,
              latsize,
              interval_lon=5 * one_minute,
              interval_lat=5 * one_minute)
 diff = int((max(h[indx]) - min(h[indx])) / 3)
 levels = arange(
     int(-max(h[indx])) - diff,
     int(-min(h[indx])) + diff, 1)
 tricontourf(tri,
             -h,
             levels=levels,
             shading='faceted',
             cmap=plt.cm.gist_earth)
 gca().patch.set_facecolor('0.5')
 cbar = colorbar()
 cbar.set_label('Water Depth (m)')
 Q = quiver(lonc[idv], latc[idv], u[idv], v[idv], scale=10)
Example #5
0
        zlev = -1  
        temp = nc.variables['temp'][tidx, zlev, j0:j1, i0:i1]
        lon = nc.variables['lon'][j0:j1,i0:i1]
        lat = nc.variables['lat'][j0:j1,i0:i1]
        depth=-nc.variables['depth'][j0:j1,i0:i1]
        lon_inside,lat_inside,TEMP,H=[],[],[],[]
        for i in range(len(temp)):
            for j in range(len(temp[i])):
                TEMP.append(temp[i][j])
                lon_inside.append(lon[i][j])
                lat_inside.append(lat[i][j])
                H.append(depth[i][j])
        tri = Tri.Triangulation(lon_inside,lat_inside)
        fig = plt.figure()
        ax = fig.add_subplot(111)
        draw_basemap(fig, ax, lonsize,latsize,interval_lon=0.1, interval_lat=0.1)
        levels=(np.arange(int(min(TEMP)),int(max(TEMP))+1.1,0.2))
        h_start,h_end=round(min(H)),round(max(H))
        levels_h=np.arange(h_start,h_end,(h_end-h_start)/10)
        levels_h=[int(i) for i in levels_h]
        cs=tricontourf(tri,TEMP,levels=levels,cmap=plt.cm.rainbow)
        cs_line=tricontour(tri,H,levels=levels_h,linewidths=0.5, colors='k')
        plt.clabel(cs_line, cs_line.levels,inline=1,inline_spacing=0,fmt='%1.0f', fontsize=10)
        gca().patch.set_facecolor('0.5')
        cbar=colorbar(cs)
        cbar.set_label('Temperature(degC)')
        plt.title('Bottom temperature,'+str(T[tidx])[0:-6]+'(local time)',fontsize=20) 
        plt.savefig('/var/www/html/ioos/sf/fig/'+method+'.png')
    except:
        nc1='Model does`t work now'
try:
Example #6
0
        itime=np.argmin(abs(np.array(T)-start))   #find nearest time
        daystr=T[itime]
        tri = Tri.Triangulation(lons,lats)
        ilayer = 0      #0 is surface,-1 is bottom
        u = nc.variables['u'][itime, ilayer, :]   
        v = nc.variables['v'][itime, ilayer, :]   
        CX= [alon-7*one_minute,alon+7*one_minute,alat-7*one_minute,alat+7*one_minute] # box you want to plot
        subsample=2
        ind = argwhere((lonc >= CX[0]) & (lonc <= CX[1]) & (latc >= CX[2]) & (latc <= CX[3]))  # find velocity points in bounding box
        np.random.shuffle(ind)
        Nvec = int(len(ind) / subsample)
        idv = ind[:Nvec]
        indx=argwhere((lons >= CX[0]) & (lons <= CX[1]) & (lats >= CX[2]) & (lats <= CX[3]))  # find  points in bounding box
        fig=plt.figure(figsize=(12,10))
        ax=fig.add_subplot(111)  #,aspect=(1.0/cos(mean(lat)*pi/180.0)))
        draw_basemap(fig, ax, lonsize, latsize,interval_lon=5*one_minute, interval_lat=5*one_minute)
        diff=int((max(h[indx])-min(h[indx]))/3)
        levels=arange(int(-max(h[indx]))-diff,int(-min(h[indx]))+diff,1)
        tricontourf(tri,-h,levels=levels,shading='faceted',cmap=plt.cm.gist_earth)
        gca().patch.set_facecolor('0.5')
        cbar=colorbar()
        cbar.set_label('Water Depth (m)')
        Q = quiver(lonc[idv],latc[idv],u[idv],v[idv],scale=10)
        maxvel =np.sqrt(np.max(abs(u[idv]))*np.max(abs(u[idv]))+np.max(abs(v[idv]))*np.max(abs(v[idv])))
        maxstr='%3.1f m/s' % maxvel
        qk = quiverkey(Q,0.92,0.08,maxvel,maxstr,labelpos='W')
        title('surface ,'+str(daystr)[0:-6]+'(local time)',fontsize=15)
        plt.savefig('/var/www/html/ioos/sf/fig/'+method+'.png')
    except:
        nc1='Model does`t work now'
if method=='Bottom temp':