1 |
|
---|
2 |
|
---|
3 |
|
---|
4 |
import sys |
---|
5 |
import os |
---|
6 |
import re |
---|
7 |
from procutil import * |
---|
8 |
from raw2proc import * |
---|
9 |
|
---|
10 |
def load_data(inFile): |
---|
11 |
lines=None |
---|
12 |
if os.path.exists(inFile): |
---|
13 |
f = open(inFile, 'r') |
---|
14 |
lines = f.readlines() |
---|
15 |
f.close() |
---|
16 |
if len(lines)<=0: |
---|
17 |
print 'Empty file: '+ inFile |
---|
18 |
else: |
---|
19 |
print 'File does not exist: '+ inFile |
---|
20 |
return lines |
---|
21 |
|
---|
22 |
import numpy |
---|
23 |
from datetime import datetime |
---|
24 |
from time import strptime |
---|
25 |
from StringIO import StringIO |
---|
26 |
from matplotlib.mlab import griddata |
---|
27 |
|
---|
28 |
fn = '/seacoos/data/nc-coos/level0/ouba/hfr_totals/2010_07/TOTL_OUBA_2010_07_14_0000.tuv' |
---|
29 |
lines = load_data(fn) |
---|
30 |
|
---|
31 |
|
---|
32 |
|
---|
33 |
|
---|
34 |
|
---|
35 |
|
---|
36 |
m = re.findall(r'^(%.*):\s*(.*)$', ''.join(lines), re.MULTILINE) |
---|
37 |
for k,v in m: |
---|
38 |
if k == '%TimeStamp': |
---|
39 |
sample_dt = scanf_datetime(v, fmt='%Y %m %d %H %M %S') |
---|
40 |
elif k == '%TableType': |
---|
41 |
ftype = v |
---|
42 |
elif k == '%TableColumns': |
---|
43 |
ncol = int(v) |
---|
44 |
elif k == '%TableRows': |
---|
45 |
nrow = int(v) |
---|
46 |
|
---|
47 |
|
---|
48 |
s = StringIO(''.join(lines)) |
---|
49 |
s.seek(0) |
---|
50 |
d = numpy.loadtxt(s, comments='%') |
---|
51 |
|
---|
52 |
if 'TOT4' in ftype: |
---|
53 |
lon = d[:,0] |
---|
54 |
lat = d[:,1] |
---|
55 |
wu = d[:,2] |
---|
56 |
wv = d[:,3] |
---|
57 |
gridflag = d[:,4] |
---|
58 |
wu_std_qual = d[:,5] |
---|
59 |
wv_std_qual = d[:,6] |
---|
60 |
cov_qual = d[:,7] |
---|
61 |
x_dist = d[:,8] |
---|
62 |
y_dist = d[:,9] |
---|
63 |
rang = d[:,10] |
---|
64 |
bearing = d[:,11] |
---|
65 |
vel_mag = d[:,12] |
---|
66 |
vel_dir = d[:,13] |
---|
67 |
s1 = d[:,14] |
---|
68 |
s2 = d[:,15] |
---|
69 |
s3 = d[:,16] |
---|
70 |
s4 = d[:,17] |
---|
71 |
s5 = d[:,18] |
---|
72 |
s6 = d[:,19] |
---|
73 |
|
---|
74 |
|
---|
75 |
|
---|
76 |
minlat, maxlat = (34.5, 38) |
---|
77 |
minlon, maxlon = (-76, -73.) |
---|
78 |
midlat = minlat + 0.5*(maxlat-minlat) |
---|
79 |
|
---|
80 |
nlat = numpy.round((maxlat-minlat) *111/6) |
---|
81 |
nlon = numpy.round((maxlon-minlon) * math.cos(midlat*math.pi/180)*111/6) |
---|
82 |
yi = numpy.linspace(minlat, maxlat, nlat) |
---|
83 |
xi = numpy.linspace(minlon, maxlon, nlon) |
---|
84 |
ui = griddata(lon, lat, wu, xi, yi) |
---|
85 |
vi = griddata(lon, lat, wv, xi, yi) |
---|
86 |
|
---|
87 |
data = { |
---|
88 |
'dt' : numpy.array(numpy.ones((1,), dtype=object)*numpy.nan), |
---|
89 |
'time' : numpy.array(numpy.ones((1,), dtype=long)*numpy.nan), |
---|
90 |
'lon' : numpy.array(numpy.ones((1,nlon), dtype=float)*numpy.nan), |
---|
91 |
'lat' : numpy.array(numpy.ones((1,nlat), dtype=float)*numpy.nan), |
---|
92 |
'u' : numpy.array(numpy.ones((1,nlon,nlat), dtype=float)*numpy.nan), |
---|
93 |
'v' : numpy.array(numpy.ones((1,nlon,nlat), dtype=float)*numpy.nan), |
---|
94 |
} |
---|
95 |
|
---|
96 |
i = 0 |
---|
97 |
data['dt'][i] = sample_dt |
---|
98 |
data['time'][i] = dt2es(sample_dt) |
---|
99 |
data['lon'][i] = xi |
---|
100 |
data['lat'][i] = yi |
---|
101 |
data['u'][i] = ui |
---|
102 |
data['v'][i] = vi |
---|
103 |
|
---|
104 |
|
---|
105 |
|
---|
106 |
|
---|