argoapi / main.py
zliang's picture
Update main.py
b881458 verified
raw
history blame contribute delete
No virus
1.25 kB
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:
# Create data fetcher with user inputs
f = DataFetcher().region([lon_min, lon_max, lat_min, lat_max, depth_min, depth_max, date_start, date_end])
# Plotting
plt.figure()
f.plot('trajectory', add_legend=False)
# Save the plot to a BytesIO buffer
buf = io.BytesIO()
plt.savefig(buf, format='png')
buf.seek(0)
plt.close()
# Encode the image in base64 and prepare it for JSON response
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)