85 lines
2.3 KiB
Python
85 lines
2.3 KiB
Python
import asyncio
|
|
import glob
|
|
from io import BytesIO
|
|
from flask import Blueprint, request, send_file
|
|
from matplotlib import pyplot as plt
|
|
from radar.plot_original import final_render_v2
|
|
from radar.plot_prod import final_plot_v2
|
|
|
|
|
|
globed_all_files = glob.glob("./radar/data/**/**.txt", recursive=True)
|
|
|
|
|
|
radar_module = Blueprint("Radar", __name__)
|
|
|
|
|
|
@radar_module.route("/metadata")
|
|
def get_all_files():
|
|
return final_render_v2.get_all_pathes()
|
|
|
|
|
|
@radar_module.route("/metadata/models")
|
|
def get_all_models():
|
|
return final_render_v2.get_all_models()
|
|
|
|
|
|
@radar_module.route('/render/heatmap')
|
|
def render_v1():
|
|
"""
|
|
wind_type: Any,
|
|
year: Any,
|
|
H: Any,
|
|
model_name: Any
|
|
"""
|
|
wind_type = request.args.get('wind_type')
|
|
year = request.args.get('year')
|
|
H = request.args.get('H')
|
|
station = request.args.get('station')
|
|
|
|
model_name = request.args.get('model_name')
|
|
mode = request.args.get('mode')
|
|
|
|
renderer = final_render_v2(int(H), int(year), station, wind_type)
|
|
if mode=="day":
|
|
day = request.args.get('day')
|
|
renderer.render_day(day,model_name)
|
|
elif mode=="month":
|
|
month = request.args.get('month')
|
|
renderer.render_month(int(month),model_name)
|
|
elif mode=="year":
|
|
renderer.render_year(model_name)
|
|
else:
|
|
raise ValueError("mode not supported")
|
|
buf = BytesIO()
|
|
plt.savefig(buf, format='png')
|
|
buf.seek(0)
|
|
# close the plot
|
|
plt.close()
|
|
return send_file(buf, mimetype='image/png')
|
|
|
|
|
|
@radar_module.route('/render/changes')
|
|
def render_v2():
|
|
"""
|
|
year: Any,
|
|
station: Any,
|
|
model_name: Any
|
|
"""
|
|
year = request.args.get('year')
|
|
station = request.args.get('station')
|
|
model_name = request.args.get('model_name')
|
|
start_month = request.args.get('start_month')
|
|
end_month = request.args.get('end_month')
|
|
if start_month is not None and end_month is not None:
|
|
start_month = int(start_month)
|
|
end_month = int(end_month)
|
|
month_range = (start_month, end_month)
|
|
else:
|
|
month_range = (1, 12)
|
|
|
|
|
|
buffer = final_plot_v2(int(year), station, model_name, month_range)
|
|
buffer.seek(0)
|
|
|
|
return send_file(buffer, mimetype='image/png')
|