-
Notifications
You must be signed in to change notification settings - Fork 0
/
bat_plot.py
81 lines (56 loc) · 2.68 KB
/
bat_plot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import folium
from folium.features import GeoJson, GeoJsonTooltip, GeoJsonPopup
from keplergl import KeplerGl
import geopandas as gpd
import pandas as pd
from database import Batiment
from kepler_config import get_config
from constants import PLOT_QUANTILE,OUTPUT_DIR
import os
def bat_plot_folium(list_batiments,insee,dept):
gpd_cons = gpd.GeoDataFrame(list_batiments)
myscale = (gpd_cons['consumption'].quantile(PLOT_QUANTILE)).tolist()
print(myscale[-1])
for insee_com,nom_com in insee:
gpd_consumption = gpd_cons[gpd_cons.insee_com == insee_com]
gpd_consumption.crs = {'init' :'epsg:4326'}
centroid=gpd_consumption.geometry.centroid
m=folium.Map(location=[centroid.y.mean(), centroid.x.mean()], zoom_start=15, tiles='stamentoner')
choro = folium.Choropleth(
name=f"Energy consumption in {nom_com}",
geo_data=gpd_consumption[['id','geometry','consumption',"nb_housing"]],
data=gpd_consumption[gpd_consumption.consumption < myscale[-1]],
columns=["id", "consumption","nb_housing"],
key_on="feature.properties.id",
fill_color='YlGnBu',
threshold_scale=myscale,
legend_name = "Energy consumption in kWh/year/housing",
nan_fill_color="red",
font_size= '12px'
).add_to(m)
choro.geojson.add_child(folium.features.GeoJsonTooltip(fields=['id','consumption','nb_housing'],
aliases=['Id','Energy Consumption (kWh/year/housing)','# housing'],
labels=True,
sticky=True,
toLocaleString=True)
)
folium.LayerControl(autoZIndex=False, collapsed=False).add_to(m)
if not os.path.exists(f'./output/{dept}'):
os.makedirs(f'./output/{dept}')
m.save(f"./output/{dept}/{nom_com}.html")
def bat_plot_kepler(list_batiments,list_dept):
gpd_consumption = gpd.GeoDataFrame(list_batiments)
gpd_consumption.crs = {'init' :'epsg:4326'}
gpd_data = gpd_consumption[['id','geometry','consumption',"nb_housing"]]
map2=KeplerGl()
map2.add_data(gpd_data,name="Energy_Consumption")
config = get_config()
filename = f"EnergyConsumption_{'_'.join([str(dept) for dept in list_dept])}.html"
filepath = os.path.join(OUTPUT_DIR,filename)
map2.save_to_html(file_name=filepath,config = config)
if __name__ == '__main__':
dept = 75
batiment = Batiment("Energy",dept)
list_batiments = batiment.get_batiments_consumption()
insee = batiment.get_insee()
bat_plot(list_batiments,insee,dept)