From Davide Bonaldo at CNR-ISMAR : here's a time series of wave data from Jesolo.
import numpy as np
import urllib
%matplotlib inline
url='https://www.dropbox.com/s/0epy3vsjgl1h8ld/ONDE_Jesolo.txt?dl=1'
local_file = '/usgs/data2/notebook/data/ONDE_Jesolo.txt'
urllib.urlretrieve (url,local_file)
('/usgs/data2/notebook/data/ONDE_Jesolo.txt', <httplib.HTTPMessage instance at 0x7f602ce65998>)
from datetime import datetime
import pandas as pd
def date_parser(year, month, day, hour, minute, second):
var = year, month, day, hour, minute, second
var = [int(float(x)) for x in var]
return datetime(*var)
df = pd.read_csv(local_file, header=None,
delim_whitespace=True, index_col='datetime',
parse_dates={'datetime': [0, 1, 2, 3, 4, 5]},
date_parser=date_parser)
df.columns=['Hsig','Twave','Dwave','Wlevel']
df[['Hsig','Wlevel']].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f602cc0e650>
import calendar
times = [ calendar.timegm(x.timetuple()) for x in df.index ]
times=np.asarray(times, dtype=np.int64)
def pd_to_secs(df):
import calendar
"""
convert a pandas datetime index to seconds since 1970
"""
return np.asarray([ calendar.timegm(x.timetuple()) for x in df.index ], dtype=np.int64)
secs = pd_to_secs(df)
# z is positive down, will generate ADCP if all z is not the same, simple time series otherwise
z = np.zeros_like(secs)
values = df['Hsig'].values
from pytools.netcdf.sensors import create,ncml,merge,crawl
sensor_urn='urn:it.cnr.ismar.ve:sensor:wave_height'
station_urn='urn:it.cnr.ismar.ve:station:onda'
attributes={'units':'m'}
create.create_timeseries_file(output_directory='/usgs/data2/notebook/data',
latitude=41.5,
longitude=-69.1,
full_station_urn=station_urn,
full_sensor_urn=sensor_urn,
sensor_vertical_datum=0.0,
times=secs,
verticals=z,
values=values,
attributes=attributes,
global_attributes={},
output_filename='wave_data.nc')