NCCOOS Trac Projects: Top | Web | Platforms | Processing | Viz | Sprints | Sandbox | (Wind)

root/sodar/trunk/sodar/arrayData.py

Revision 136 (checked in by cbc, 16 years ago)

Fixed up axes, labels, and titles.

Line 
1 #!/usr/bin/python
2 """
3 Module to handle sodar data samples as arrays.
4 """
5
6 __author__ = 'Chris Calloway'
7 __email__ = 'cbc@unc.edu'
8 __copyright__ = 'Copyright 2007 UNC-CH Department of Marine Science'
9 __license__ = 'GPL2'
10
11 import rawData
12 import formattedData
13 import numpy as n
14 from numpy import matrix
15 import datetime
16
17 class ArrayData(object):
18    
19     """Class to handle Daily sodar file data as arrays."""
20    
21     def __init__(self, data):
22         """Create arrays from formatted data."""
23         super(ArrayData, self).__init__()
24         self.beginStamp = data.beginStamp
25         self.endStamp = data.endStamp
26         self.numIntervals = data.numIntervals
27         self.timeInterval = data.timeInterval
28         self.altInterval = data.altInterval
29         self.numAltitudes = data.numAltitudes
30         self.minAltitude = data.minAltitude
31         self.maxAltitude = data.maxAltitude
32         self._thetas(data)
33         self._uComponents(data)
34         self._vComponents(data)
35         self._wComponents(data)
36         self._echoStrengths(data)
37    
38     def _thetas(self, data):
39         """Convert direction to polar azimuth in radians CW from North"""
40         self.thetas = n.pi * (n.array(data.thetas()) / 180.0)
41    
42     def _uComponents(self,data):
43         """Compute u component array"""
44         self.uComponents = n.array(data.radials()) * n.sin(self.thetas)
45    
46     def _vComponents(self,data):
47         """Compute v component array"""
48         self.vComponents = n.array(data.radials()) * n.cos(self.thetas)
49    
50     def _wComponents(self,data):
51         """Create w component array"""
52         self.wComponents = n.array(data.wComponents())
53    
54     def _echoStrengths(self,data):
55         """Create an echo strength array"""
56         self.echoStrengths = n.array(data.echoStrengths())
57
58
59 def _main():
60     """Process as script from command line."""
61     import urllib2
62     try:
63         rawDataHandle = urllib2.urlopen('http://nemo.isis.unc.edu/'\
64                                         'data/nccoos/level0/ims/sodar/'\
65                                         '2008_01/20080101.dat')
66         rawDataString = rawDataHandle.read()
67         rawDataHandle.close()
68     except:
69         raise IOError("Failure to read raw test data")
70     rawDataObject = rawData.RawData(rawDataString)
71     formattedDataObject = formattedData.FormattedData(rawDataObject)
72     arrayDataObject = ArrayData(formattedDataObject)
73    
74     import pylab as p
75    
76     home = '/var/www/html/sodar/plots/'
77    
78     fig = p.figure()
79     p.pcolor(arrayDataObject.uComponents.T)
80     p.colorbar()
81     fig.savefig(home + 'uComponents.png')
82    
83     fig = p.figure()
84     p.pcolor(arrayDataObject.vComponents.T)
85     p.colorbar()
86     fig.savefig(home + 'vComponents.png')
87    
88     fig = p.figure()
89     p.pcolor(arrayDataObject.wComponents.T)
90     p.colorbar()
91     fig.savefig(home + 'wComponents.png')
92
93     fig = p.figure()
94     p.pcolor(arrayDataObject.echoStrengths.T)
95     p.colorbar()
96     fig.savefig(home + 'echoStrengths.png')
97
98     fig = p.figure()
99     p.quiver(arrayDataObject.uComponents,
100              arrayDataObject.vComponents,
101              arrayDataObject.wComponents)
102     p.colorbar()
103     xmin,xmax,ymin,ymax = p.axis()
104     dx,dy = xmax-xmin, ymax-ymin
105     p.axis([xmin-0.1*dx, xmax+0.1*dx, ymin-0.1*dy, ymax+0.1*dy])
106     p.title('Horizontal wind vectors: time vs. altitude')
107     fig.savefig(home + 'quiver.png')
108
109 if __name__ == "__main__":
110     _main()
Note: See TracBrowser for help on using the browser.