import os from os import sep import project try: from pylab import plot,show,xlabel,ylabel,legend,title,savefig,hold except: print 'Cannot import pylab plotting will not work. Csv files are still created' from anuga.utilities.polygon import inside_polygon from anuga.utilities.numerical_tools import ensure_numeric from Scientific.IO.NetCDF import NetCDFFile def get_sts_gauge_data(filename,verbose=False): from Numeric import asarray,transpose,sqrt,argmax,argmin,arange,Float,\ compress,zeros,fabs,take fid = NetCDFFile(filename+'.sts', 'r') #Open existing file for read x = fid.variables['x'][:]+fid.xllcorner #x-coordinates of vertices y = fid.variables['y'][:]+fid.yllcorner #y-coordinates of vertices points=transpose(asarray([x.tolist(),y.tolist()])) time=fid.variables['time'][:]+fid.starttime elevation=fid.variables['elevation'][:] basename='sts_gauge' quantity_names=['stage','xmomentum','ymomentum'] quantities = {} for i, name in enumerate(quantity_names): quantities[name] = fid.variables[name][:] maxname = 'max_sts_stage.csv' fid_max = open(project.boundaries_dir+sep+maxname,'w') s = 'x, y, max_stage \n' fid_max.write(s) for j in range(len(x)): locx=int(x[j]) locy=int(y[j]) stage = quantities['stage'][:,j] xmomentum = quantities['xmomentum'][:,j] ymomentum = quantities['ymomentum'][:,j] s = '%.6f, %.6f, %.6f\n' %(x[j], y[j], max(stage)) fid_max.write(s) fid_sts = open(project.boundaries_dir+sep+basename+'_'+str(locx)+'_'+str(locy)+'.csv', 'w') s = 'time, stage, xmomentum, ymomentum \n' fid_sts.write(s) for k in range(len(time)-1): s = '%.6f, %.6f, %.6f, %.6f\n' %(time[k], stage[k], xmomentum[k], ymomentum[k]) fid_sts.write(s) fid_sts.close() fid.close() return quantities,elevation,time quantities,elevation,time=get_sts_gauge_data(os.path.join(project.boundaries_dir,project.scenario_name),verbose=False) print len(elevation), len(quantities['stage'][0,:])