50 lines
1.0 KiB
Python
50 lines
1.0 KiB
Python
|
from base64 import b64encode
|
||
|
from io import BytesIO
|
||
|
|
||
|
from folium import Map
|
||
|
|
||
|
from app.preprocessing import create_dataframe
|
||
|
from constants import COORDINATES
|
||
|
|
||
|
|
||
|
def get_figure(plot):
|
||
|
plot_figure = plot.get_figure()
|
||
|
figure = BytesIO()
|
||
|
plot_figure.savefig(figure)
|
||
|
figure.seek(0)
|
||
|
return figure
|
||
|
|
||
|
|
||
|
def render_plot(df):
|
||
|
df.fillna(value=0, inplace=True)
|
||
|
plot = df.plot("year", ["surface", "length", "elevation"], kind="bar")
|
||
|
figure = get_figure(plot)
|
||
|
return figure
|
||
|
|
||
|
|
||
|
def encode_plot(figure):
|
||
|
plot = b64encode(figure.getvalue().decode())
|
||
|
return plot
|
||
|
|
||
|
|
||
|
def create_plot(df):
|
||
|
figure = render_plot(df)
|
||
|
plot = encode_plot(figure)
|
||
|
return plot
|
||
|
|
||
|
|
||
|
def create_map(df):
|
||
|
map = Map(location=COORDINATES)
|
||
|
for row in df.iterrows():
|
||
|
map.simple_marker(
|
||
|
location=[row["fields.geo_shape.coordinates"]], clustered_marker=True
|
||
|
)
|
||
|
return map
|
||
|
|
||
|
|
||
|
def process_data(dataset):
|
||
|
df = create_dataframe(dataset)
|
||
|
plot = create_plot(df)
|
||
|
map = create_map(df)
|
||
|
return plot, map
|