argoapi / main.py
zliang's picture
Update main.py
e80b519 verified
raw
history blame
No virus
1.03 kB
from fastapi import FastAPI, HTTPException
from argopy import DataFetcher
import matplotlib.pyplot as plt
from fastapi.responses import StreamingResponse
import io
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)
buf = io.BytesIO()
plt.savefig(buf, format='png')
buf.seek(0)
plt.close()
return StreamingResponse(buf, media_type="image/png")
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)