Skip to content
Snippets Groups Projects
Commit 74caa890 authored by kgao's avatar kgao
Browse files

wind_direction wasn't being calculated correctly

parent 24452d52
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ import numpy as np ...@@ -9,6 +9,7 @@ import numpy as np
import platform import platform
from aosstower import station from aosstower import station
from datetime import timedelta as delta from datetime import timedelta as delta
import calc
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
...@@ -111,6 +112,9 @@ def createVariables(ncFile, firstStamp, chunksizes, zlib): ...@@ -111,6 +112,9 @@ def createVariables(ncFile, firstStamp, chunksizes, zlib):
if key == 'base_time': if key == 'base_time':
variable.string = bts variable.string = bts
if 'time' in key:
variable.calendar = 'gregorian'
for entry in parser.database: for entry in parser.database:
if(entry == 'stamp'): if(entry == 'stamp'):
continue continue
...@@ -196,11 +200,30 @@ def getRolling(series, minutes): ...@@ -196,11 +200,30 @@ def getRolling(series, minutes):
return returnSeries return returnSeries
def getNewWindDirection(wind_dir, wind_speed, stamps):
newWindDir = {}
for stamp in stamps:
before = stamp - delta(minutes=1)
if before not in wind_speed.index:
newWindDir[stamp] = None
else:
speed = wind_speed[before: stamp].tolist()
dire = wind_dir[before: stamp].tolist()
wind_dire = calc.mean_wind_vector(speed, dire)[0]
newWindDir[stamp] = wind_dire
return pd.Series(newWindDir)
def minuteAverages(frame): def minuteAverages(frame):
frame['minute'] = [(ts + delta(minutes=1)).replace(second=0) for ts in frame.index] frame['minute'] = [(ts + delta(minutes=1)).replace(second=0) for ts in frame.index]
newFrame = frame.groupby('minute').mean() newFrame = frame.groupby('minute').mean()
newFrame.index.names = [''] newFrame.index.names = ['']
columns = list(newFrame.columns.values) columns = list(newFrame.columns.values)
if 'wind_speed' in columns: if 'wind_speed' in columns:
del newFrame['wind_speed'] del newFrame['wind_speed']
...@@ -223,14 +246,20 @@ def minuteAverages(frame): ...@@ -223,14 +246,20 @@ def minuteAverages(frame):
newFrame['gust'] = gust newFrame['gust'] = gust
if 'wind_direction' in columns: if 'wind_dir' in columns:
del newFrame['wind_direction'] del newFrame['wind_dir']
dupFrame = frame.set_index('minute')
stamps = newFrame.index
windDirSeries = frame['wind_direction'] windDirSeries = dupFrame['wind_dir']
windDirSeries = getRolling(windDirSeries, list(newFrame.index)) windSeries = dupFrame['wind_speed']
newFrame['wind_direction'] = windDirSeries windDirSeries = getNewWindDirection(windDirSeries, windSeries, stamps)
newFrame['wind_dir'] = windDirSeries
del frame['minute'] del frame['minute']
...@@ -348,15 +377,15 @@ def createGiantNetCDF(start, end, inputFiles, outputName, zlib, chunkSize): ...@@ -348,15 +377,15 @@ def createGiantNetCDF(start, end, inputFiles, outputName, zlib, chunkSize):
frame = getData(inputFiles) frame = getData(inputFiles)
frame = minuteAverages(frame)
if(frame.empty): if(frame.empty):
return False return False
else: else:
frame = minuteAverages(frame)
if(start and end): if(start and end):
frame = frame[start.strftime('%Y-%m-%d %H:%M:%S'): end.strftime('%Y-%m-%d %H:%M:%S')] frame = frame[start.strftime('%Y-%m-%d %H:%M:%S'): end.strftime('%Y-%m-%d %H:%M:%S')]
print(frame)
if(default): if(default):
chunksizes = [len(list(frame.index))] chunksizes = [len(list(frame.index))]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment