print(string.strip(si['name'])) print("# Station geo location") print("%g, %g" % (si['lat'], si['lon'])) print("# Elevation (meters)") print("%g" % si['elevation']) print("# Station sensors") print(string.join(nnv, ", ")) else: print(",".join([si['code'], string.strip(si['name'].replace(',', ' ')), str(si['lat']), str(si['lon']), str(si['elevation']), ":".join(nnv)])) elif args.command == 'dl': si = { 'code' : args.station_code } get_station_info(si) doc = download_station_data(si, args.fmt, args.tstamp, args.hours, args.vlist) if args.info_fmt == 'loose': with open('%s_%s.%s' % (args.station_code, args.tstamp.strftime(tstamp_fmt), args.fmt), 'w') as f: f.write(doc) else: # read in standard observation variances with open(args.obs_var_table, "r") as f: obs_var_tbl = dict(map(lambda x: x.split(","), map(string.strip, f.readlines()))) for k,v in obs_var_tbl.iteritems(): obs_var_tbl[k] = float(v) obs = decode_obs_xls(doc) write_plain_format(si['code'],obs,obs_var_tbl) else: sys.exit(1)
obs_var_tbl = dict(map(lambda x: x.split(","), map(string.strip, f.readlines()))) for k,v in obs_var_tbl.iteritems(): obs_var_tbl[k] = float(v) # for each station find all xls files for sid in sids: print("Processing station %s" % sid) fnames = glob.glob("%s*.xls" % sid) stored_obs = {} # read in each file and parse the contents obs = {} for fname in fnames: with open(fname, 'r') as f: obs_i = decode_obs_xls(f.read()) obs.update(obs_i) # write out the data in a neat csv file with open("%s.obs" % sid, "w") as f: f.write("# Data file generated on %s by extract_observations.py\n" % str(datetime.now())) f.write("# Format is time, observed_vars, observations, variances\n") for tm in sorted(obs.keys()): # sometimes stations need not supply a single measurement at a given time, then zip() fails if len(obs[tm]) > 0: # remove unavailable measurments var_list, obs_list = zip(*obs[tm]) obs_var = [ obs_var_tbl[x] if x in obs_var_tbl else float("nan") for x in var_list ] f.write(tm.strftime('%Y-%m-%d_%H:%M %Z')) f.write('\n') f.write(string.join(map(str, var_list), ", "))