def getSensorImage(self): self.wakeup() self.__ser.write("LOOP 1\n"); self.checkAck() buf = self.__ser.read(99) if buf[0:3] != "LOO": raise Exception("Start of block was not LOO") img = SensorImage() img.WindSpeed = mph2kts(struct.unpack("<B", buf[14])[0]) img.AverageWindSpeed = mph2kts(struct.unpack("<B", buf[15])[0]) img.WindDirection = struct.unpack("<H", buf[16:18])[0] img.IndoorTemperature = f2c(float(struct.unpack("<H", buf[9:11])[0])/10) img.IndoorRelativeHumidity = struct.unpack("<B", buf[11])[0] img.OutdoorTemperature = f2c(float(struct.unpack("<H", buf[12:14])[0])/10) img.OutdoorRelativeHumidity = struct.unpack("<B", buf[33])[0] img.QFE = inHg2hPa(float(struct.unpack("<H", buf[7:9])[0])/1000.0) img.QFETrend = struct.unpack("<b", buf[3])[0] img.Forecast = struct.unpack("<B", buf[89])[0] img.RainRate = float(struct.unpack("<H", buf[41:43])[0]) * 0.2 img.RainDay = float(struct.unpack("<H", buf[50:52])[0])* 0.2 img.OutdoorDewpoint = dewpoint_approximation(img.OutdoorTemperature, img.OutdoorRelativeHumidity) stationcrc = struct.unpack(">H", buf[97:100])[0] crc = 0 ccitt = CRC_CCITT() for c in buf[:97]: crc = ccitt.update_crc(crc, ord(c)) if (stationcrc != crc): raise Exception("CRC error, image crc does not match our crc!") img.Timestamp = time.time() return img
ax1.set_xlim(min(ydg), max(ydg)) ax1.set_ylim(min(tmin), max(tmax)) plt.legend(loc='best') if depth == 1: dd = '_surf' else: dd = '' plt.title(site + dd + ' daily averages (with 30 year research vessel climatology in blue)') #plt.title('OC01 at 77 meters SNE Shelf') ax1.grid(True) c = ax1.axis() ax2 = ax1.twinx() ax2.set_ylabel('Celsius') ax2.axis(ymin=f2c(c[2])[0], ymax=f2c(c[3])[0]) ax2.set_xlim(min(ydg), max(ydg)) # here we add the climatology curve by getting a value each month print 'adding climatology ...' clim_files_directory = '/net/data5/jmanning/clim/' climt, datett = [], [] [lat1, lon1] = getemolt_latlon(site) for k in range(12): datett.append(dt.datetime(2012, k + 1, 1, 0, 0, 0)) # note that it assumes year 2012 climt.append(getclim(lat1, lon1, dt.datetime(2012, k + 1, 1, 0, 0, 0))) datett.append(dt.datetime(2013, 1, 1, 0, 0, 0)) # adds one more point to close out the year climt.append(climt[0]) ax2.plot(datett, climt, linewidth=4)
""" Compares eMOLT with FVCOM bottom temp @author: jmanning, rsignell, yacheng """ import matplotlib.pyplot as plt import netCDF4 from getdata import getemolt_latlon, getemolt_temp from conversions import dm2dd, f2c from utilities import nearxy site = 'BN01' [lati, loni, on] = getemolt_latlon(site) # extracts lat/lon based on site code [lati, loni] = dm2dd(lati, loni) #converts decimal-minutes to decimal degrees [obs_dt, obs_temp] = getemolt_temp(site) # extracts time series for kk in range(len(obs_temp)): obs_temp[kk] = f2c(obs_temp[kk]) # converts to Celcius # now get the model output urlfvcom = 'http://www.smast.umassd.edu:8080/thredds/dodsC/fvcom/hindcasts/30yr_gom3' nc = netCDF4.Dataset(urlfvcom) nc.variables lat = nc.variables['lat'][:] lon = nc.variables['lon'][:] times = nc.variables['time'] jd = netCDF4.num2date(times[:], times.units) vname = 'temp' var = nc.variables[vname] # find nearest point to desired location and time inode = nearxy(lon, lat, loni, lati) index = netCDF4.date2index(
""" Compares eMOLT with FVCOM bottom temp @author: jmanning, rsignell, yacheng """ import matplotlib.pyplot as plt import netCDF4 from getdata import getemolt_latlon,getemolt_temp from conversions import dm2dd,f2c from utilities import nearxy site='BN01' [lati,loni,on]=getemolt_latlon(site) # extracts lat/lon based on site code [lati,loni]=dm2dd(lati,loni) #converts decimal-minutes to decimal degrees [obs_dt,obs_temp]=getemolt_temp(site) # extracts time series for kk in range(len(obs_temp)): obs_temp[kk]=f2c(obs_temp[kk]) # converts to Celcius # now get the model output urlfvcom = 'http://www.smast.umassd.edu:8080/thredds/dodsC/fvcom/hindcasts/30yr_gom3' nc = netCDF4.Dataset(urlfvcom) nc.variables lat = nc.variables['lat'][:] lon = nc.variables['lon'][:] times = nc.variables['time'] jd = netCDF4.num2date(times[:],times.units) vname = 'temp' var = nc.variables[vname] # find nearest point to desired location and time inode = nearxy(lon,lat,loni,lati) index=netCDF4.date2index([obs_dt[0],obs_dt[-1]],times,select='nearest')#find the model time index at start & end pf obs
# get data [lati,loni,on,bd]=getemolt_latlon(site)# extracts lat/lon based on site code [lati,loni]=dm2dd(lati,loni)#converts decimal-minutes to decimal degrees ''' dept=[0,5] (obs_dt,obs_temps,obs_salt)=getobs_tempsalt(site, input_time=[dt.datetime(2004,6,7),dt.datetime(2004,6,24)], dep=dept) obs_tempslist=[] for i in range(len(obs_temps)): obs_tempslist.append(f2c(obs_temps[i])) dfsur=pd.DataFrame(obs_tempslist,index=obs_dt) ''' dept=[bd[0]-0.4*bd[0],bd[0]+0.35*bd[0]] (obs_dt,obs_tempb,obs_salt)=getobs_tempsalt(site, input_time=[dt.datetime(2004,6,7),dt.datetime(2004,6,24)], dep=dept) obs_tempblist=[] for i in range(len(obs_tempb)): obs_tempblist.append(f2c(obs_tempb[i])) dfbot=pd.DataFrame(obs_tempblist,index=obs_dt) #dfsur=dfsur.ix[dfsur.index.hour==0] #dfbot=dfbot.ix[dfbot.index.hour==0] # get model modtso=getFVCOM_bottom_tempsalt_netcdf(lati,loni,dt.datetime(2004,6,7),dt.datetime(2004,6,24),layer=range(45),vname='temp') #modtso=modtso.ix[modtso.index.hour==0] for i in range(len(dfbot)): fig=plt.figure() plt.plot(modtso.values[i],range(0,-45,-1),'g*') # plt.plot([float32(dfsur[0][i]),float32(dfbot[0][i])],[0,-44],'r*') plt.plot([float32(dfbot[0][i])],[-44],'r*') plt.ylim(-45,1) plt.xlabel('layer(0-44)') plt.ylabel('Temprature(Centigrade)')
Compares eMOLT with FVCOM bottom temp @author: jmanning, rsignell, yacheng """ import matplotlib.pyplot as plt import netCDF4 from getdata import getemolt_latlon,getemolt_temp from conversions import dm2dd,f2c from utilities import nearxy site='BN01' [lati,loni,on]=getemolt_latlon(site) # extracts lat/lon based on site code [lati,loni]=dm2dd(lati,loni) #converts decimal-minutes to decimal degrees [obs_dt,obs_tempf]=getemolt_temp(site) # extracts time series obs_temp=[] for kk in range(len(obs_tempf)): obs_temp.append(f2c(obs_tempf[kk])) # converts to Celcius # now get the model output urlfvcom = 'http://www.smast.umassd.edu:8080/thredds/dodsC/fvcom/hindcasts/30yr_gom3' nc = netCDF4.Dataset(urlfvcom) nc.variables lat = nc.variables['lat'][:] lon = nc.variables['lon'][:] times = nc.variables['time'] jd = netCDF4.num2date(times[:],times.units) vname = 'temp' var = nc.variables[vname] # find nearest point to desired location and time inode = nearxy(lon,lat,loni,lati) index=netCDF4.date2index([obs_dt[0],obs_dt[-1]],times,select='nearest')#find the model time index at start & end pf obs