def read_knmi(fname, variables='RD'):
"""This method can be used to import KNMI data.
Parameters
----------
fname: str
Filename and path to a Dino file.
Returns
-------
ts: Pandas Series
returns a standard Pastas TimeSeries object or a list of it.
"""
knmi = KnmiStation.fromfile(fname)
if variables is None:
variables = knmi.variables.keys()
if type(variables) == str:
variables = [variables]
stn_codes = knmi.data['STN'].unique()
ts = []
for code in stn_codes:
for variable in variables:
if variable not in knmi.data.keys():
raise (ValueError(
"variable %s is not in this dataset. Please use one of "
"the following keys: %s" % (variable, knmi.data.keys())))
series = knmi.data.loc[knmi.data['STN'] == code, variable]
# get rid of the hours when data is daily
if pd.infer_freq(series.index) == 'D':
series.index = series.index.normalize()
metadata = {}
if knmi.stations is not None and not knmi.stations.empty:
station = knmi.stations.loc[str(code), :]
metadata['x'] = station.LON_east
metadata['y'] = station.LAT_north
metadata['z'] = station.ALT_m
metadata['projection'] = 'epsg:4326'
stationname = station.NAME
else:
stationname = str(code)
metadata['description'] = knmi.variables[variable]
if variable == 'RD' or variable == 'RH':
kind = 'prec'
elif variable == 'EV24':
kind = 'evap'
else:
kind = None
ts.append(TimeSeries(series, name=variable + stationname,
metadata=metadata, kind=kind))
if len(ts) == 1:
ts = ts[0]
return ts
评论列表
文章目录