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)
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)
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)
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')
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)
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)