#!/usr/bin/python """ Module to handle sodar data samples as arrays. """ __author__ = 'Chris Calloway' __email__ = 'cbc@unc.edu' __copyright__ = 'Copyright 2007 UNC-CH Department of Marine Science' __license__ = 'GPL2' import rawData import formattedData import numpy as n import datetime class ArrayData(object): """Class to handle Daily sodar file data as arrays.""" def __init__(self, data): """Create arrays from formatted data.""" super(ArrayData, self).__init__() self.timeInterval = data.timeInterval self.altInterval = data.altInterval self.numAltitudes = data.numAltitudes self.minAltitude = data.minAltitude self.maxAltitude = data.maxAltitude self._thetas(data) self._uComponents(data) self._vComponents(data) self._wComponents(data) def _thetas(self, data): """Convert direction to polar azimuth in radians CW from North""" self.thetas = n.pi * (n.array(data.thetas()) / 180) def _uComponents(self,data): """Compute u component array""" self.uComponents = n.array(data.radials()) * n.cos(self.thetas) def _vComponents(self,data): """Compute v component array""" self.vComponents = n.array(data.radials()) * n.sin(self.thetas) def _wComponents(self,data): """Create w component array""" self.wComponents = n.array(data.wComponents()) def _main(): """Process as script from command line.""" import urllib2 try: rawDataHandle = urllib2.urlopen('http://nemo.isis.unc.edu/'\ 'data/nccoos/level0/dukeforest/sodar/'\ 'store/2007-06/20070601.dat') rawDataString = rawDataHandle.read() rawDataHandle.close() except: raise IOError("Failure to read raw test data") rawDataObject = rawData.RawData(rawDataString) formattedDataObject = formattedData.FormattedData(rawDataObject) arrayDataObject = ArrayData(formattedDataObject) import pylab as p p.figure() p.quiver(arrayDataObject.uComponents, arrayDataObject.vComponents) p.show() if __name__ == "__main__": _main()