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':
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()
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,
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)
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:
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':