BEEPAS / app.py
youl's picture
Update app.py
addd16f
raw
history blame
2.48 kB
import gradio as gr
from api import *
from processing import *
import pandas as pd
from indices import indices
import xgboost as xgb
import pickle
def predict(lat, lon):
cord = [lon,lat]
download(cord)
unzip()
name,cld_prob,days_ago = select_best_cloud_coverage_tile()
bandes_path_10,bandes_path_20,bandes_path_60,tile_path,path_cld_20,path_cld_60 =paths(name)
# create image dataset
images_10 = extract_sub_image(bandes_path_10,tile_path,cord)
# bandes with 20m resolution
#path_cld_20
images_20 = extract_sub_image(bandes_path_20,tile_path,cord,20,1)
# bandes with 60m resolution
#path_cld_60
images_60 = extract_sub_image(bandes_path_60,tile_path,cord,60)
#
feature = images_10.tolist()+images_20.tolist()+images_60.tolist()
bands = ['B02', 'B03', 'B04', 'B05', 'B06', 'B07', 'B08', 'B8A', 'B11', 'B12','B01','B09']
X = pd.DataFrame([feature],columns = bands)
# vegetation index calculation
X = indices(X)
# load the model from disk
filename = "data/finalized_model.sav"
loaded_model = pickle.load(open(filename, 'rb'))
# make prediction
biomass = loaded_model.predict(X)[0]
carbon = 0.55*biomass
# NDVI
ndvi_index = ndvi(cord,name)
# deleted download files
delete_tiles()
return str(cld_prob)+ " % cloud coverage", str(days_ago)+" days ago",str(biomass)+" Mg/ha", str(carbon)+" MgC/ha","NDVI: "+ str(ndvi_index)
# Create title, description and article strings
title = "🌴BEEPAS : Biomass estimation to Evaluate the Environmental Performance of Agroforestry System🌴"
description = "This application estimates the biomass of certain areas using AI and satellite images (S2)."
article = "Created by data354."
# Create examples list from "examples/" directory
#example_list = [["examples/" + example] for example in os.listdir("examples")]
example_list = [[5.379913, -4.050445],[6.54644,-7.86156],[5.346938, -4.027849]]
outputs = [
gr.Textbox(label="Cloud coverage"),
gr.Textbox(label="Number of days since sensing"),
gr.Textbox(label="Above ground biomass density(AGBD) Mg/ha"),
gr.Textbox(label="Carbon stock density MgC/ha "),
gr.Textbox(label="Mean NDVI"),]
demo = gr.Interface(
fn=predict,
inputs=["number", "number"],
outputs=outputs, #[ "text", "text","text","text","text"],
examples=example_list,
title=title,
description=description,
article=article,
)
demo.launch(share=False)