def test_get_pvgis_tmy_kwargs(userhorizon_expected): _, _, inputs, _ = get_pvgis_tmy(45, 8, usehorizon=False) assert inputs['meteo_data']['use_horizon'] is False data, _, _, _ = get_pvgis_tmy(45, 8, userhorizon=[0, 10, 20, 30, 40, 15, 25, 5]) assert np.allclose(data['G(h)'], userhorizon_expected['G(h)'].values) assert np.allclose(data['Gb(n)'], userhorizon_expected['Gb(n)'].values) assert np.allclose(data['Gd(h)'], userhorizon_expected['Gd(h)'].values) _, _, inputs, _ = get_pvgis_tmy(45, 8, startyear=2005) assert inputs['meteo_data']['year_min'] == 2005 _, _, inputs, _ = get_pvgis_tmy(45, 8, endyear=2016) assert inputs['meteo_data']['year_max'] == 2016
def test_get_pvgis_tmy_epw(expected, epw_meta): data, _, _, meta = get_pvgis_tmy(45, 8, outputformat='epw') assert np.allclose(data.ghi, expected['G(h)']) assert np.allclose(data.dni, expected['Gb(n)']) assert np.allclose(data.dhi, expected['Gd(h)']) assert np.allclose(data.temp_air, expected['T2m']) assert meta == epw_meta
def test_get_pvgis_tmy_csv(expected, month_year_expected, inputs_expected, meta_expected, csv_meta): data, months_selected, inputs, meta = get_pvgis_tmy( 45, 8, outputformat='csv') # check each column of output separately for outvar in meta_expected['outputs']['tmy_hourly']['variables'].keys(): assert np.allclose(data[outvar], expected[outvar]) assert np.allclose( [_['month'] for _ in months_selected], np.arange(1, 13, 1)) assert np.allclose( [_['year'] for _ in months_selected], month_year_expected) assert inputs['latitude'] == inputs_expected['location']['latitude'] assert inputs['longitude'] == inputs_expected['location']['longitude'] assert inputs['elevation'] == inputs_expected['location']['elevation'] for meta_value in meta: if not meta_value: continue if meta_value == 'PVGIS (c) European Communities, 2001-2020': continue assert meta_value in csv_meta
def get_from_pvgis(lat, lon, tz): """Return the pvgis data""" # PVGIS information info = get_pvgis_tmy(lat, lon) # Altitude alt = info[2]['location']['elevation'] # Get th principal information df = info[0] # Convert UTC to time zone df.index = df.index.tz_convert(tz) df.index.name = f'Time {tz}' # Get the solar position solpos = get_solarposition(time=df.index, latitude=lat, longitude=lon, altitude=alt, pressure=df.SP, temperature=df.T2m) # Create the schema data = df data = data.drop(df.columns, axis=1) data['HourOfDay'] = df.index.hour data['Zenith'] = solpos['zenith'] data['Temperature'] = df.T2m data['Humidity'] = df.RH data['WindSpeed'] = df.WS10m data['WindDirection'] = df.WD10m data['PrecipitableWater'] = gueymard94_pw(df.T2m, df.RH) data['Pressure'] = df.SP data['ExtraRadiation'] = get_extra_radiation(df.index) data['GHI'] = df['G(h)'] return data
def test_get_pvgis_tmy(expected, month_year_expected, inputs_expected, meta_expected): data, months_selected, inputs, meta = get_pvgis_tmy(45, 8) # check each column of output separately for outvar in meta_expected['outputs']['tmy_hourly']['variables'].keys(): assert np.allclose(data[outvar], expected[outvar]) assert np.allclose( [_['month'] for _ in months_selected], np.arange(1, 13, 1)) assert np.allclose( [_['year'] for _ in months_selected], month_year_expected) inputs_loc = inputs['location'] assert inputs_loc['latitude'] == inputs_expected['location']['latitude'] assert inputs_loc['longitude'] == inputs_expected['location']['longitude'] assert inputs_loc['elevation'] == inputs_expected['location']['elevation'] inputs_met_data = inputs['meteo_data'] expected_met_data = inputs_expected['meteo_data'] assert ( inputs_met_data['radiation_db'] == expected_met_data['radiation_db']) assert inputs_met_data['year_min'] == expected_met_data['year_min'] assert inputs_met_data['year_max'] == expected_met_data['year_max'] assert inputs_met_data['use_horizon'] == expected_met_data['use_horizon'] assert inputs_met_data['horizon_db'] == expected_met_data['horizon_db'] assert meta == meta_expected
def test_get_pvgis_tmy(expected, month_year_expected, inputs_expected, meta_expected): pvgis_data = get_pvgis_tmy(45, 8) _compare_pvgis_tmy_json(expected, month_year_expected, inputs_expected, meta_expected, pvgis_data)
def test_get_pvgis_tmy_error(): err_msg = 'outputformat: Incorrect value.' with pytest.raises(requests.HTTPError, match=err_msg): get_pvgis_tmy(45, 8, outputformat='bad') with pytest.raises(requests.HTTPError, match='404 Client Error'): get_pvgis_tmy(45, 8, url='https://re.jrc.ec.europa.eu/')
def test_get_pvgis_tmy_epw(expected, epw_meta): pvgis_data = get_pvgis_tmy(45, 8, outputformat='epw') _compare_pvgis_tmy_epw(expected, epw_meta, pvgis_data)
def test_get_pvgis_tmy_csv(expected, month_year_expected, inputs_expected, meta_expected, csv_meta): pvgis_data = get_pvgis_tmy(45, 8, outputformat='csv') _compare_pvgis_tmy_csv(expected, month_year_expected, inputs_expected, meta_expected, csv_meta, pvgis_data)
def test_get_pvgis_tmy_basic(expected, meta_expected): pvgis_data = get_pvgis_tmy(45, 8, outputformat='basic') _compare_pvgis_tmy_basic(expected, meta_expected, pvgis_data)
def test_get_pvgis_tmy_basic(expected, meta_expected): data, _, _, _ = get_pvgis_tmy(45, 8, outputformat='basic') # check each column of output separately for outvar in meta_expected['outputs']['tmy_hourly']['variables'].keys(): assert np.allclose(data[outvar], expected[outvar])
def test_get_pvgis_map_variables(pvgis_tmy_mapped_columns): actual, _, _, _ = get_pvgis_tmy(45, 8, map_variables=True) assert all([c in pvgis_tmy_mapped_columns for c in actual.columns])
def test_get_pvgis_tmy_epw(expected, epw_meta): pvgis_data = get_pvgis_tmy(45, 8, outputformat='epw', map_variables=False) _compare_pvgis_tmy_epw(expected, epw_meta, pvgis_data)
def test_get_pvgis_tmy_basic(expected, meta_expected): pvgis_data = get_pvgis_tmy(45, 8, outputformat='basic', map_variables=False) _compare_pvgis_tmy_basic(expected, meta_expected, pvgis_data)
def test_get_pvgis_tmy(expected, month_year_expected, inputs_expected, meta_expected): pvgis_data = get_pvgis_tmy(45, 8, map_variables=False) _compare_pvgis_tmy_json(expected, month_year_expected, inputs_expected, meta_expected, pvgis_data)
def test_pvgis_tmy_variable_map_deprecating_warning_0_10(): with pytest.warns(pvlibDeprecationWarning, match='names will be renamed'): _ = get_pvgis_tmy(45, 8) with pytest.warns(pvlibDeprecationWarning, match='names will be renamed'): fn = DATA_DIR / 'tmy_45.000_8.000_2005_2016.epw' _ = read_pvgis_tmy(fn)