distribute electricity demand in ua and md based on GDP data

This commit is contained in:
martacki 2022-03-05 11:21:37 +01:00
parent 025dd35878
commit d2af983378
2 changed files with 6 additions and 18 deletions

View File

@ -226,7 +226,7 @@ rule add_electricity:
geth_hydro_capacities='data/geth2015_hydro_capacities.csv', geth_hydro_capacities='data/geth2015_hydro_capacities.csv',
load='resources/load.csv', load='resources/load.csv',
nuts3_shapes='resources/nuts3_shapes.geojson', nuts3_shapes='resources/nuts3_shapes.geojson',
gdp='data/bundle/GDP_PPP_30arcsec_v3.nc', ua_md_gdp='data/bundle/GDP_PPP_30arcsec_v3_mapped.csv',
**{f"profile_{tech}": f"resources/profile_{tech}.nc" **{f"profile_{tech}": f"resources/profile_{tech}.nc"
for tech in config['renewable']} for tech in config['renewable']}
output: "networks/elec.nc" output: "networks/elec.nc"

View File

@ -190,7 +190,7 @@ def load_powerplants(ppl_fn):
.replace({'carrier': carrier_dict})) .replace({'carrier': carrier_dict}))
def attach_load(n, regions, load, nuts3_shapes, gdp, countries, scaling=1.): def attach_load(n, regions, load, nuts3_shapes, ua_md_gdp, countries, scaling=1.):
substation_lv_i = n.buses.index[n.buses['substation_lv']] substation_lv_i = n.buses.index[n.buses['substation_lv']]
regions = (gpd.read_file(regions).set_index('name') regions = (gpd.read_file(regions).set_index('name')
@ -198,17 +198,7 @@ def attach_load(n, regions, load, nuts3_shapes, gdp, countries, scaling=1.):
opsd_load = (pd.read_csv(load, index_col=0, parse_dates=True) opsd_load = (pd.read_csv(load, index_col=0, parse_dates=True)
.filter(items=countries)) .filter(items=countries))
#ToDo: adapt time+slices from config etc. (cover all data) ua_md_gdp = pd.read_csv(ua_md_gdp, dtype={'name': 'str'}).set_index('name')
gdp = (xr.open_dataset(gdp)
.sel(time=2015)
.sel(longitude=slice(10,30))
.sel(latitude=slice(50, 30)))
weightmap = xa.pixel_overlaps(gdp, regions.iloc[0:2])
aggregated = xa.aggregate(gdp, weightmap)
print(aggregated.to_dataset().name)
print(aggregated.to_dataset().GDP_per_capita_PPP)
print(martha)
logger.info(f"Load data scaled with scalling factor {scaling}.") logger.info(f"Load data scaled with scalling factor {scaling}.")
opsd_load *= scaling opsd_load *= scaling
@ -233,8 +223,8 @@ def attach_load(n, regions, load, nuts3_shapes, gdp, countries, scaling=1.):
# regression on the country to continent load data # regression on the country to continent load data
factors = normed(0.6 * normed(gdp_n) + 0.4 * normed(pop_n)) factors = normed(0.6 * normed(gdp_n) + 0.4 * normed(pop_n))
if cntry in ['UA', 'MD']: if cntry in ['UA', 'MD']:
#generate new factors in this case # overwrite factor because nuts3 provides no data for UA+MD
print('ToDo: adjust load for UA and MD here') factors = normed(ua_md_gdp.loc[group.index, "GDP_PPP"].squeeze())
return pd.DataFrame(factors.values * l.values[:,np.newaxis], return pd.DataFrame(factors.values * l.values[:,np.newaxis],
index=l.index, columns=factors.index) index=l.index, columns=factors.index)
@ -242,8 +232,6 @@ def attach_load(n, regions, load, nuts3_shapes, gdp, countries, scaling=1.):
load = pd.concat([upsample(cntry, group) for cntry, group load = pd.concat([upsample(cntry, group) for cntry, group
in regions.geometry.groupby(regions.country)], axis=1) in regions.geometry.groupby(regions.country)], axis=1)
print(some_error)
n.madd("Load", substation_lv_i, bus=substation_lv_i, p_set=load) n.madd("Load", substation_lv_i, bus=substation_lv_i, p_set=load)
@ -571,7 +559,7 @@ if __name__ == "__main__":
ppl = load_powerplants(snakemake.input.powerplants) ppl = load_powerplants(snakemake.input.powerplants)
attach_load(n, snakemake.input.regions, snakemake.input.load, snakemake.input.nuts3_shapes, attach_load(n, snakemake.input.regions, snakemake.input.load, snakemake.input.nuts3_shapes,
snakemake.input.gdp, snakemake.config['countries'], snakemake.config['load']['scaling_factor']) snakemake.input.ua_md_gdp, snakemake.config['countries'], snakemake.config['load']['scaling_factor'])
update_transmission_costs(n, costs, snakemake.config['lines']['length_factor']) update_transmission_costs(n, costs, snakemake.config['lines']['length_factor'])