| from fastapi import FastAPI, HTTPException |
| from fastapi.responses import JSONResponse |
| from argopy import DataFetcher |
| import matplotlib.pyplot as plt |
| import io |
| import base64 |
|
|
| app = FastAPI() |
|
|
| @app.get("/plot_trajectory") |
| def plot_trajectory(lon_min: float, lon_max: float, lat_min: float, lat_max: float, |
| depth_min: float, depth_max: float, |
| date_start: str, date_end: str): |
| try: |
| |
| f = DataFetcher().region([lon_min, lon_max, lat_min, lat_max, depth_min, depth_max, date_start, date_end]) |
| |
| |
| plt.figure() |
| f.plot('trajectory', add_legend=False) |
|
|
| |
| buf = io.BytesIO() |
| plt.savefig(buf, format='png') |
| buf.seek(0) |
| plt.close() |
|
|
| |
| encoded_img = base64.b64encode(buf.read()).decode('utf-8') |
| response = {"image_base64": encoded_img} |
|
|
| return JSONResponse(content=response) |
|
|
| except Exception as e: |
| raise HTTPException(status_code=500, detail=str(e)) |
|
|
|
|
| if __name__ == "__main__": |
| import uvicorn |
| uvicorn.run(app, host="0.0.0.0", port=7860) |
|
|