Passed
Pull Request — dev (#855)
by
unknown
01:27
created

data.datasets.plotdatascn.plot_generation()   A

Complexity

Conditions 1

Size

Total Lines 50
Code Lines 34

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 34
dl 0
loc 50
rs 9.064
c 0
b 0
f 0
cc 1
nop 3
1
#!/usr/bin/env python3
2
# -*- coding: utf-8 -*-
3
"""
4
Created on Tue May 24 14:42:05 2022
5
Plotdatascn.py defines functions to plot to provide a better context of the different parameters part of
6
scenarios eGon2035 and eGon100RE .
7
@author: Alonso
8
9
"""
10
11
12
    
13
import logging
14
import os
15
from matplotlib import pyplot as plt
16
import matplotlib.patches as mpatches
17
import matplotlib as mpl
18
#import pandas as pd
19
#import numpy as np
20
#from math import sqrt, log10
21
from pyproj import Proj, transform
22
#import tilemapbase
23
#import tilemapbase
24
#import geopandas as gpd
25
#from egon.data import db
26
#from egon.data.config import settings
27
#from egon.data.datasets import Dataset
28
#import egon.data.config
29
import pandas as pd
30
from egon.data import db
31
from egon.data.datasets import Dataset
32
import egon.data.config
33
import geopandas as gpd
34
35
#import cartopy
36
#import cartopy.crs as ccrs
37
#import cartopy.mpl.geoaxes
38
#import requests
39
40
41
logger = logging.getLogger(__name__)
42
43
if 'READTHEDOCS' not in os.environ:
44
    from geoalchemy2.shape import to_shape
45
46
__copyright__ = ("Flensburg University of Applied Sciences, "
47
                 "Europa-Universität Flensburg, "
48
                 "Centre for Sustainable Energy Systems, "
49
                 "DLR-Institute for Networked Energy Systems")
50
__license__ = ""
51
__author__ = ""
52
53
54
55
56
57
58
59
def plot_generation(
60
              carrier,scenario, osm=False
61
            ):
62
    
63
64
   con = db.engine()
65
   SQLBus = "SELECT bus_id, country FROM grid.egon_etrago_bus WHERE country='DE'"
66
   busDE = pd.read_sql(SQLBus,con)
67
   busDE = busDE.rename({'bus_id': 'bus'},axis=1)
68
   #busDE = busDE.loc[busDE['country'] == 'DE']
69
   sql = "SELECT bus_id, geom FROM grid.egon_mv_grid_district"
70
   distr = gpd.GeoDataFrame.from_postgis(sql, con)
71
   distr = distr.rename({'bus_id': 'bus'},axis=1)
72
   distr = distr.set_index("bus")
73
   distr = pd.merge(busDE, distr, on='bus')
74
75
   sqlCarrier = "SELECT carrier, p_nom, bus FROM grid.egon_etrago_generator"
76
   sqlCarrier = "SELECT * FROM grid.egon_etrago_generator"
77
   Carriers = pd.read_sql(sqlCarrier,con)
78
   Carriers = Carriers.loc[Carriers['scn_name'] == scenario]
79
   Carriers = Carriers.set_index("bus")
80
81
82
   CarrierGen = Carriers.loc[Carriers['carrier'] == carrier]
83
84
   Merge = pd.merge(CarrierGen, distr, on ='bus', how="outer")
85
86
    
87
   Merge.loc[Merge ['carrier'] != carrier, "p_nom" ] = 0
88
   Merge.loc[Merge ['country'] != "DE", "p_nom" ] = 0
89
90
   gdf = gpd.GeoDataFrame(Merge , geometry='geom')
91
   print(Merge)
92
   pnom=gdf['p_nom']
93
   max_pnom=pnom.quantile(0.95)
94
   print(max_pnom)
95
   #import cartopy.crs as ccrs 
96
   #fig, ax = plt.subplots(subplot_kw={"projection":ccrs.PlateCarree()})
97
   fig, ax = plt.subplots(figsize=(10,10))
98
   ax.set_axis_off();
99
   plt.title(f" {carrier} installed capacity in MW , {scenario}")
100
   cmap = mpl.cm.coolwarm
101
   norm = mpl.colors.Normalize(vmin=0, vmax=max_pnom)
102
   gdf.plot(column='p_nom', ax=ax, legend=True,  legend_kwds={'label': "p_nom(MW)",
103
104
                       'orientation': "vertical"}, cmap=cmap, norm=norm)
105
               
106
       
107
   return 0
108
   plot_generation(carrier, scenario)   
109
110