def getemolt_latlon(site): """ get data from emolt_site """ urllatlon = 'http://gisweb.wh.whoi.edu:8080/dods/whoi/emolt_site?emolt_site.SITE,emolt_site.LAT_DDMM,emolt_site.LON_DDMM,emolt_site.ORIGINAL_NAME,emolt_site.BTM_DEPTH&emolt_site.SITE=' dataset = open_url(urllatlon+'"'+site+'"') print dataset var = dataset['emolt_site'] lat = list(var.LAT_DDMM) lon = list(var.LON_DDMM) original_name = list(var.ORIGINAL_NAME) bd=fth2m(list(var.BTM_DEPTH)[0]) #bd=fth2m(bd[0]) return lat[0], lon[0], original_name,bd
# -*- coding: utf-8 -*- """ Created on Fri Apr 2 14:20:23 2021 Preparing the output of "emolt_pd_cfrf_2.py" for ORACLE load where we input several files "vessel_id_sn.csv" and convert fths to meters @author: James.manning """ import pandas as pd from conversions import fth2m files=['vessel_1_355644','vessel_2_355635','vessel_3_355265','vessel_3_358481','vessel_4_355637','vessel_4_355803','vessel_7_355642',\ 'vessel_8_355645','vessel_9_355265','vessel_9_355641','vessel_9_356526','vessel_10_354872','vessel_10_354875','vessel_10_355632',\ 'vessel_11_355634','vessel_11_356045','vessel_12_355633','vessel_13_355266','vessel_13_355636','vessel_13_356526',\ 'vessel_14_358482','vessel_15_355266','vessel_15_355639','vessel_15_355801','vessel_16_356524','vessel_17_355802',\ 'vessel_20_356527','vessel_22_355635','vessel_24_358483','vessel_27_358477','vessel_30_358479'] df=pd.read_csv('finals/csvs/'+files[0]+'.csv') print('reading output of emolt_pd_cfrf_2.py') for kk in files[1:]: df1=pd.read_csv('finals/csvs/'+kk+'.csv') df=pd.concat([df,df1]) df['depth']=fth2m(df['depth'])# converts to meters df.to_csv('CFRF_temps_2014_2021')
#depmean=[48,11,44,16,30,26,6,11] #sites=['OD08','BI03','TH01','RA01','BF01','OM01','BT01','AC02'] depmean = [20] sites = ['BN01'] sitelabel = "".join(sites) #leg=['Sprague Downeast','Alley Mid-Coast','Brown Mass Bay'] #leg=['Carter','Gamage','Tripp'] leg = [''] #################################### depmin, depmax = [], [ ] # this defines a range of acceptable depths for this site for k in range(len(depmean)): depmin.append(int(fth2m(depmean[k]) - 0.10 * fth2m(depmean[k]))) #meters depmax.append(int(fth2m(depmean[k]) + 0.10 * fth2m(depmean[k]))) #meters if depmin[k] == depmax[k]: depmin[k] = depmin[k] - 2 depmax[k] = depmax[k] + 2 print depmin, depmax def getemolt_by_site_depth(site, depthw): """ Function written by Jim Manning borrowed from Huanxin's functions in "getemolt" package site: is the 4-digit string like "BD01" depth: includes bottom depth and surface depth,like: [80,0]. Modified Feb 2020 to accept eMOLT.csv file as extracted earlier when ERDDAP is down. """
from matplotlib.dates import DateFormatter from numpy import mean import datetime as dt import scipy from getdata import get_dataset, getemolt_temp from pandas.core.common import save for k in range(len(site)): if site[k][0:3]=='DMF': minnumperday=10 # had to use this in DMF case since they only record every two hours numperday=12 else: minnumperday=18 numperday=24 [datet,temp,depth_i]=getemolt_temp(site,k,input_time=[dt.datetime(1880,1,1),dt.datetime(2020,1,1)], dep=[0,1000]) depth=int(fth2m(mean(depth_i)))# mean depth of instrument to be added to outputfilename for m in range(len(temp)): temp[m]=(temp[m]-32.0)/1.8 tso=Series(temp,index=datet) tsod=tso.resample('D',how=['count','mean','median','min','max','std'],loffset=timedelta(hours=-12)) tsod.ix[tsod['count']<minnumperday,['mean','median','min','max','std']] = 'NaN' #add columns for custom date format tsod['yy']=tsod.index.year tsod['mm']=tsod.index.month tsod['dd']=tsod.index.day output_fmt=['yy','mm','dd','count','mean','median','min','max','std'] tsodp=tsod.reindex(columns=output_fmt) tsodp.to_csv(outdir+site[k]+'_wtmp_da_'+str(depth)+'.csv',index=False,header=False,na_rep='NaN',float_format='%10.2f') #create a monthly mean tsom=tso.resample('m',how=['count','mean','median','min','max','std'],kind='period')
ax1[0].set_ylabel('degC') ax4.set_ylabel('degF') if len( idchange_time ) > 0: # here's where we force the line to not draw between sessions dfds1['depth'][pm1] = np.nan dfds1['depth'][p0] = np.nan dfds1['depth'][p1] = np.nan dfds1['depth'][p2] = np.nan ax1[1].plot(dfds1.index.values, -1 * dfds1.depth.values) ax1[1].set_ylabel('Depth (fathoms)') ax1[1].set_xlabel('Date') ax5 = ax1[1].twinx() ax5.set_ylabel('meters') ax5.set_ylim(-1 * fth2m(maxd), -1 * fth2m(mind)) fig.autofmt_xdate() plt.show() thismanager = plt.get_current_fig_manager() thismanager.window.setGeometry(900, 400, 1000, 600) try: ok = float( input( 'ok? 1 = ok, .5 for more agressive, 2 less, 4 for range, 6 three pts, & 7 exit ' )) except: ok = 0 if ok < 0: mingood = input('minimum good temp?:') dfds1 = dfds1[dfds1['temp'] > mingood] ok = 0