예제 #1
0
def get_irradiance(lat=latitude,
                   lon=longitude,
                   tz=tzo,
                   intervals_of_3=1,
                   time=datetime.datetime.now() +
                   datetime.timedelta(hours=-5)):
    start = pd.Timestamp(time, tz=tz)

    end = start + pd.Timedelta(hours=3 * intervals_of_3)
    irrad_vars = ['ghi', 'dni', 'dhi']

    print(start, end)
    model = GFS()
    raw_data = model.get_data(lat, lon, start, end)

    # print(raw_data.head())

    data = raw_data
    data = model.rename(data)
    data['temp_air'] = model.kelvin_to_celsius(data['temp_air'])
    data['wind_speed'] = model.uv_to_speed(data)
    irrad_data = model.cloud_cover_to_irradiance(data['total_clouds'])
    data = data.join(irrad_data, how='outer')
    data = data[model.output_variables]

    data = model.rename(raw_data)
    irrads = model.cloud_cover_to_irradiance(data['total_clouds'],
                                             how='clearsky_scaling')

    # change this to list when taking more than one values
    return (irrads.ghi.values.tolist()), (data['total_clouds'].values / 100)
예제 #2
0
def load_GFS_data(latitude=33.8688,
                  longitude=151.2093,
                  tz='Australia/Sydney',
                  days=7):

    # latitude, longitude, tz = 32.2, -110.9, 'US/Arizona'
    # latitude, longitude, tz = 32.2, -110.9, 'US/Arizona'
    # latitude = 33.8688
    # longitude=151.2093
    # tz='Australia/Sydney'
    start = pd.Timestamp(datetime.date.today(), tz=tz)
    end = start + pd.Timedelta(days=7)
    irrad_vars = ['ghi', 'dni', 'dhi']

    model = GFS()
    raw_data = model.get_data(latitude, longitude, start, end)
    print(raw_data.head())

    data = raw_data
    data = model.rename(data)
    data['temp_air'] = model.kelvin_to_celsius(data['temp_air'])
    data['wind_speed'] = model.uv_to_speed(data)
    irrad_data = model.cloud_cover_to_irradiance(data['total_clouds'])
    data = data.join(irrad_data, how='outer')
    data = data[model.output_variables]
    print(data.head())

    data = model.process_data(raw_data)
    print(data.head())

    data = model.get_processed_data(latitude, longitude, start, end)

    print(data.head())

    return (data)
예제 #3
0
def test_temp_convert():
    with pytest.warns(pvlibDeprecationWarning):
        amodel = GFS()
    data = pd.DataFrame({'temp_air': [273.15]})
    data['temp_air'] = amodel.kelvin_to_celsius(data['temp_air'])

    assert_allclose(data['temp_air'].values, 0.0)
예제 #4
0
def forecast(latitude, longitude, tz='UTC'):
    # specify time range.
    start = Timestamp(datetime.date.today(), tz=tz)

    end = start + Timedelta(days=7)

    irrad_vars = ['ghi', 'dni', 'dhi']

    # 0.25 deg available
    model = GFS()

    # retrieve data. returns pandas.DataFrame object
    raw_data = model.get_data(latitude, longitude, start, end)

    #print(raw_data.head())

    data = raw_data
    data = data.resample('15min').asfreq()
    data = data.interpolate(method='linear', limit_direction='forward', axis=0)

    # rename the columns according the key/value pairs in model.variables.
    data = model.rename(data)

    # convert temperature
    data['temp_air'] = model.kelvin_to_celsius(data['temp_air'])

    # convert wind components to wind speed
    data['wind_speed'] = model.uv_to_speed(data)

    # calculate irradiance estimates from cloud cover.
    # uses a cloud_cover to ghi to dni model or a
    # uses a cloud cover to transmittance to irradiance model.
    # this step is discussed in more detail in the next section
    irrad_data = model.cloud_cover_to_irradiance(data['total_clouds'])

    data = data.join(irrad_data, how='outer')

    # keep only the final data
    data = data[model.output_variables]
    fig = data[['ghi', 'dni', 'dhi']].plot().get_figure()
    return fig


#latitude, longitude, tz = -34, -58, 'America/Argentina/Buenos_Aires'
#fig=forecast(latitude, longitude, tz)
#fig.savefig('irradiance.png')
예제 #5
0
def test_temp_convert():
    amodel = GFS()
    data = pd.DataFrame({'temp_air': [273.15]})
    data['temp_air'] = amodel.kelvin_to_celsius(data['temp_air'])

    assert_allclose(data['temp_air'].values, 0.0)
예제 #6
0
def test_temp_convert():
    amodel = GFS()
    data = pd.DataFrame({'temp_air': [273.15]})
    data['temp_air'] = amodel.kelvin_to_celsius(data['temp_air'])

    assert_allclose(data['temp_air'].values, 0.0)
예제 #7
0
def get_pvlib_data(latitude, longitude, tz, altitude, city, start_time,
                   end_time):

    # getting turbidity tables
    pvlib_path = os.path.dirname(os.path.abspath(pvlib.clearsky.__file__))
    filepath = os.path.join(pvlib_path, 'data', 'LinkeTurbidities.h5')

    def plot_turbidity_map(month, vmin=1, vmax=100):
        plt.figure()
        with tables.open_file(filepath) as lt_h5_file:
            ltdata = lt_h5_file.root.LinkeTurbidity[:, :, month - 1]
        plt.imshow(ltdata, vmin=vmin, vmax=vmax)
        # data is in units of 20 x turbidity
        plt.title('Linke turbidity x 20, ' + calendar.month_name[month])
        plt.colorbar(shrink=0.5)
        plt.tight_layout()

    plot_turbidity_map(1)

    plot_turbidity_map(7)

    # getting clearsky estimates
    loc = Location(latitude, longitude, tz, altitude, city)
    times = pd.date_range(start=start_time, end=end_time, freq='H', tz=loc.tz)
    cs = loc.get_clearsky(times)

    # getting pvlib forecasted irradiance based on cloud_cover
    #irrad_vars = ['ghi', 'dni', 'dhi']
    model = GFS()
    raw_data = model.get_data(latitude, longitude, start_time, end_time)
    data = raw_data

    # rename the columns according the key/value pairs in model.variables.
    data = model.rename(data)

    # convert temperature
    data['temp_air'] = model.kelvin_to_celsius(data['temp_air'])

    # convert wind components to wind speed
    data['wind_speed'] = model.uv_to_speed(data)

    # calculate irradiance estimates from cloud cover.
    # uses a cloud_cover to ghi to dni model or a
    # uses a cloud cover to transmittance to irradiance model.
    irrad_data = model.cloud_cover_to_irradiance(data['total_clouds'])

    # correcting timezone
    data.index = data.index.tz_convert(loc.tz)
    irrad_data.index = irrad_data.index.tz_convert(loc.tz)

    # joining cloud_cover and irradiance data frames
    data = data.join(irrad_data, how='outer')

    # renaming irradiance estimates
    cs.rename(columns={
        'ghi': 'GHI_clearsky',
        'dhi': 'DHI_clearsky',
        'dni': 'DNI_clearsky'
    },
              inplace=True)

    data.rename(columns={
        'ghi': 'GHI_pvlib',
        'dhi': 'DHI_pvlib',
        'dni': 'DNI_pvlib'
    },
                inplace=True)

    # joining clearsky with cloud_cover irradiances
    data = data.join(cs, how='outer')
    return (data)