knmi.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:pastas 作者: pastas 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号