Mundo em Python

Índice de Risco de Incêndio Florestal

from tkinter import *


# Funções de cálculo
def calculate_ffmc(temp, humidity, wind, rain):
mc = (147.2 * (101 - humidity)) / (59.5 + humidity)
ffmc = 59.5 * (250 - mc) / (147.2 + mc)
return ffmc
def calculate_dmc(temp, rain):
if rain > 1.5:
rain_effect = 0.92 * (rain - 1.5) ** 1.27
else:
rain_effect = 0
dmc = (temp + rain_effect) / 2
return dmc
def calculate_dc(temp, rain, prev_dc):
if rain > 2.8:
rain_effect = 0.83 * (rain - 2.8)
else:
rain_effect = 0
dc = prev_dc + (0.83 * temp - rain_effect)
return dc
def calculate_isi(ffmc, wind):
isi = ffmc * wind / 50
return isi
def calculate_bui(dmc, dc):
bui = dmc + dc
return bui
def calculate_fwi(isi, bui):
fwi = isi + bui / 2
return fwi
def classify_fwi(fwi):
if fwi < 5.2:
return "Baixo"
elif 5.2 <= fwi < 11.2:
return "Moderado"
elif 11.2 <= fwi < 21.3:
return "Elevado"
elif 21.3 <= fwi < 38:
return "Muito Elevado"
else:
return "Extremo"


# Funções de interface
def limpar():
prev_dc_entrada.delete(0, END)
Velocidade_entrada.delete(0, END)
Humidade_entrada.delete(0, END)
Temperatura_entrada.delete(0, END)
Precipitação_entrada.delete(0, END)
resultado_texto.config(text="")
def app():
v = float(Velocidade.get())
h = float(Humidade.get())
t = float(Temperatura.get())
chuva = float(Precipitação.get())
DC = float(prev_dc.get()) # Calcular sub-índices
ffmc = calculate_ffmc(t, h, v, chuva)
dmc = calculate_dmc(t, chuva)
dc = calculate_dc(t, chuva, DC)
isi = calculate_isi(ffmc, v)
bui = calculate_bui(dmc, dc)
fwi = calculate_fwi(isi, bui) classificacao_fwi = classify_fwi(fwi) mensagem = (f"Índice de Umidade de Combustível Fino: {ffmc:.2f}\n"
f"Índice de Umidade do Matagal: {dmc:.2f}\n"
f"Índice de Seca: {dc:.2f}\n"
f"Índice de Propagação Inicial: {isi:.2f}\n"
f"Índice de Acúmulo: {bui:.2f}\n"
f"Índice Meteorológico de Incêndio: {fwi:.2f} "
f"Classificação: {classificacao_fwi}") resultado_texto.config(text=mensagem)
# Configuração da janela principal
root = Tk()
root.geometry("600x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Índice de Risco de Incêndio Florestal") # Componentes da interface
titulo = Label(text="Índice de Risco de Incêndio Florestal",
font=("Arial", 23, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05) texto_sub1 = Label(text="Temperatura em graus Celsius:",
font=("Arial", 15, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.2) texto_sub2 = Label(text="Humidade relativa em %:",
font=("Arial", 15, "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.15, rely=0.3) texto_sub3 = Label(text="Velocidade do vento em km/h:",
font=("Arial", 15, "bold"), bg="#103030", fg="#49e3e3")
texto_sub3.place(relx=0.07, rely=0.4) texto_sub4 = Label(text="Precipitação em mm:",
font=("Arial", 15, "bold"), bg="#103030", fg="#49e3e3")
texto_sub4.place(relx=0.2, rely=0.5) texto_sub5 = Label(text="DC do dia anterior:",
font=("Arial", 15, "bold"), bg="#103030", fg="#49e3e3")
texto_sub5.place(relx=0.2, rely=0.6) Temperatura = StringVar()
Temperatura_entrada = Entry(textvariable=Temperatura,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Temperatura_entrada.place(relx=0.65, rely=0.21, relwidth=0.25)
Temperatura_entrada.focus() Humidade = StringVar()
Humidade_entrada = Entry(textvariable=Humidade,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Humidade_entrada.place(relx=0.65, rely=0.31, relwidth=0.25) Velocidade = StringVar()
Velocidade_entrada = Entry(textvariable=Velocidade,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Velocidade_entrada.place(relx=0.65, rely=0.41, relwidth=0.25) Precipitação = StringVar()
Precipitação_entrada = Entry(textvariable=Precipitação,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Precipitação_entrada.place(relx=0.65, rely=0.51, relwidth=0.25) prev_dc = StringVar()
prev_dc_entrada = Entry(textvariable=prev_dc,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
prev_dc_entrada.place(relx=0.65, rely=0.61, relwidth=0.25) but1 = Button(text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1,rely=0.68, relwidth=0.25, relheight=0.05) but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4,rely=0.68,relwidth=0.25, relheight=0.05) but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7,rely=0.68, relwidth=0.25, relheight=0.05) resultado_texto = Label(font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.75, relwidth=0.9, relheight=0.3) root.mainloop()
0