コード例 #1
0
def get_repetition_times_knmi(dates, pref=None):
    """Get repetition times from KNMI data.
    
    Calculates the repetition times for maximum peak wind and 
    highest hourly wind peak. 
    

    Parameters
    ----------
    dates : list of dt.DateTime objects
        Dates of the storm
    pref : str or None (optional)
        Preference for a certain function.
        If None, returns optimal fit function.
        If 'gumbel', returns only the Gumbel one.
        If 'weibull', returns only the Weibull result.

    Returns
    -------
    rtdf : pandas.DataFrame
        DataFrame with location and both types of return times.

    """
    rtdf = pd.DataFrame(
        columns=['Station_', 'longitude', 'latitude', 'RT', 'RTH'])
    for station in knmi.stations.keys():

        if station > 199:
            data = knmi.get_day_data_dataframe(stations=[station],
                                               start=dt.datetime(1963, 1, 1))
            if len(data['FHX']) < 100:
                continue

            data['FHX'] = data['FHX'] * 0.1
            data['FXX'] = data['FXX'] * 0.1
            try:
                ecdfw = ECDF(data['FXX'][data['FXX'] >= 0])
                ecdfh = ECDF(data['FHX'][data['FHX'] >= 0])
                lastmax = np.nanmax([data['FXX'][date] for date in dates])
                lastmaxh = np.nanmax([data['FHX'][date] for date in dates])
                chance = optimal_function(ecdfw.x[1:],
                                          ecdfw.y[1:],
                                          lastmax,
                                          pref=pref)
                chanceh = optimal_function(ecdfh.x[1:],
                                           ecdfh.y[1:],
                                           lastmaxh,
                                           pref=pref)
            except:
                continue

            returntime = round(1 / (1 - chance))
            returntimeh = round(1 / (1 - chanceh))

            if returntime > 0 and returntime < 1000000 and len(
                    data['FXX'][data['FXX'] >= 0]) > 10 * 365:
                if returntimeh > 0 and returntimeh < 1000000 and len(
                        data['FHX'][data['FHX'] >= 0]) > 10 * 365:

                    rtdf = rtdf.append(
                        {
                            'Station_': int(station),
                            'longitude': knmi.stations[station].longitude,
                            'latitude': knmi.stations[station].latitude,
                            'RT': returntime,
                            'RTH': returntimeh
                        },
                        ignore_index=True)

    rtdf['Station_'] = rtdf['Station_'].astype(int)
    rtdf['RT'] = rtdf['RT'].astype(int)
    rtdf['RTH'] = rtdf['RTH'].astype(int)
    return rtdf
コード例 #2
0
# encoding: utf-8
"""
Going to use some knwi weather stuff here..

https://github.com/EnergieID/KNMI-py
"""

import knmi
df = knmi.get_day_data_dataframe(stations=[260])
print(df.disclaimer)
print(df.stations)
コード例 #3
0
import knmi

df = knmi.get_day_data_dataframe(
    stations=[260],
    start="19570701",
    end="20190701",
    inseason=False,
    variables=["RH", "EV24"],
)
df.loc[df["RH"] < 0, "RH"] = 0.5
df["RH"] /= 10
df["EV24"] /= 10
df["NOV"] = df["RH"] - df["EV24"]
df["hydr_jaar"] = df.index.year
df.loc[df.index.month < 4, "hydr_jaar"] -= 1

df.groupby("hydr_jaar")["NOV"].sum().to_csv("data/neerslagoverschot.csv", header=True)
コード例 #4
0
#https://github.com/EnergieID/KNMI-py

import knmi
import metadata

print(metadata.stations)  # provides a list of all available stations
print(metadata.variables)  # provides a list of all variables and explanations

station_de_bilt = 260
station_eelde = 280
print("Ophalen dagdata")
disclaimer, stations, legend, df = knmi.get_day_data_dataframe(
    stations=[station_de_bilt, station_eelde],
    start="20200501",
    end="20200601")
print(stations, legend)
print(df)
print("Ophalen uurdata")
disclaimer, stations, legend, df = knmi.get_hour_data_dataframe(
    stations=[station_de_bilt, station_eelde],
    start="2020080101",
    end="2020080105")
print(stations, legend)
print(df)
print("Ophalen uurdata alleen temp en zon")
disclaimer, stations, legend, df = knmi.get_hour_data_dataframe(
    stations=[station_de_bilt, station_eelde],
    start="2020080101",
    end="2020080124",
    variables=['TEMP', 'SUNR'])
print(stations, legend)