Spaces:
Sleeping
Sleeping
Update MOD_V_TCOND_Z4_008C.py
Browse files- MOD_V_TCOND_Z4_008C.py +63 -0
MOD_V_TCOND_Z4_008C.py
CHANGED
|
@@ -7,6 +7,8 @@ import seaborn as sns
|
|
| 7 |
from sklearn.preprocessing import MinMaxScaler
|
| 8 |
import statsmodels.api as sm
|
| 9 |
import matplotlib.pyplot as plt
|
|
|
|
|
|
|
| 10 |
|
| 11 |
df_model = pd.read_excel('dados/MOD_V_TCOND_Z4_008C/MOD_V_TCOND_Z4_008C.xlsx')
|
| 12 |
|
|
@@ -78,6 +80,67 @@ def load_inputs():
|
|
| 78 |
|
| 79 |
return [ANO_2020, ANO_2021, ANO_2022, ANO_2023, ANO_2024, ANO_2025, RH, INFRA, ATPRIV]
|
| 80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
title = 'MOD_V_TCOND_Z4_008C (Terrenos em Condomínio)'
|
| 82 |
|
| 83 |
# Texto do cabeçalho
|
|
|
|
| 7 |
from sklearn.preprocessing import MinMaxScaler
|
| 8 |
import statsmodels.api as sm
|
| 9 |
import matplotlib.pyplot as plt
|
| 10 |
+
from fpdf import FPDF
|
| 11 |
+
import os
|
| 12 |
|
| 13 |
df_model = pd.read_excel('dados/MOD_V_TCOND_Z4_008C/MOD_V_TCOND_Z4_008C.xlsx')
|
| 14 |
|
|
|
|
| 80 |
|
| 81 |
return [ANO_2020, ANO_2021, ANO_2022, ANO_2023, ANO_2024, ANO_2025, RH, INFRA, ATPRIV]
|
| 82 |
|
| 83 |
+
def gerar_pdf_relatorio(ano_2020, ano_2021, ano_2022, ano_2023, ano_2024, ano_2025, rh, infra, atpriv,
|
| 84 |
+
val_imovel, lim_inf, perc_inf, lim_sup, perc_sup, grafico_path):
|
| 85 |
+
|
| 86 |
+
# Prevenção: verificar se o usuário já clicou em "Calcular"
|
| 87 |
+
if not val_imovel:
|
| 88 |
+
raise gr.Error("Por favor, clique em 'Calcular Valor' antes de gerar o PDF!")
|
| 89 |
+
|
| 90 |
+
# Mapear os anos selecionados
|
| 91 |
+
anos_dict = {
|
| 92 |
+
"2020": ano_2020, "2021": ano_2021, "2022": ano_2022,
|
| 93 |
+
"2023": ano_2023, "2024": ano_2024, "2025": ano_2025
|
| 94 |
+
}
|
| 95 |
+
anos_selecionados =[ano for ano, selecionado in anos_dict.items() if selecionado]
|
| 96 |
+
anos_str = ", ".join(anos_selecionados) if anos_selecionados else "Nenhum"
|
| 97 |
+
|
| 98 |
+
pdf = FPDF()
|
| 99 |
+
pdf.add_page()
|
| 100 |
+
|
| 101 |
+
# Cabeçalho
|
| 102 |
+
pdf.set_font("helvetica", style="B", size=16)
|
| 103 |
+
pdf.cell(0, 10, "Relatório de Avaliação - MOD_V_TCOND_Z4_008C", ln=True, align='C')
|
| 104 |
+
pdf.ln(5)
|
| 105 |
+
|
| 106 |
+
# 1. Seção de Inputs
|
| 107 |
+
pdf.set_fill_color(240, 240, 240)
|
| 108 |
+
pdf.set_font("helvetica", style="B", size=12)
|
| 109 |
+
pdf.cell(0, 10, " 1. Parâmetros de Entrada", ln=True, fill=True)
|
| 110 |
+
|
| 111 |
+
pdf.set_font("helvetica", size=11)
|
| 112 |
+
pdf.cell(0, 8, f" Área de Terreno Privativa: {atpriv}", ln=True)
|
| 113 |
+
pdf.cell(0, 8, f" Região Homogênea (RH): {rh}", ln=True)
|
| 114 |
+
pdf.cell(0, 8, f" Infraestrutura: {infra}", ln=True)
|
| 115 |
+
pdf.cell(0, 8, f" Anos de Referência: {anos_str}", ln=True)
|
| 116 |
+
pdf.ln(5)
|
| 117 |
+
|
| 118 |
+
# 2. Seção de Resultados
|
| 119 |
+
pdf.set_font("helvetica", style="B", size=12)
|
| 120 |
+
pdf.cell(0, 10, " 2. Resultados da Inferência", ln=True, fill=True)
|
| 121 |
+
|
| 122 |
+
pdf.set_font("helvetica", size=11)
|
| 123 |
+
pdf.cell(0, 8, f" Valor do imóvel: {val_imovel}", ln=True)
|
| 124 |
+
pdf.cell(0, 8, f" Limite Inferior do IC: {lim_inf} ({perc_inf})", ln=True)
|
| 125 |
+
pdf.cell(0, 8, f" Limite Superior do IC: {lim_sup} ({perc_sup})", ln=True)
|
| 126 |
+
pdf.ln(10)
|
| 127 |
+
|
| 128 |
+
# 3. Adicionar o Gráfico salvo
|
| 129 |
+
if grafico_path and os.path.exists(grafico_path):
|
| 130 |
+
pdf.set_font("helvetica", style="B", size=12)
|
| 131 |
+
pdf.cell(0, 10, " 3. Gráfico de Dispersão (Observados vs Previstos)", ln=True)
|
| 132 |
+
pdf.ln(5)
|
| 133 |
+
# Insere a imagem centralizada (x=15, largura=180mm)
|
| 134 |
+
pdf.image(grafico_path, x=15, w=180)
|
| 135 |
+
|
| 136 |
+
# Salvar PDF no disco
|
| 137 |
+
pdf_filename = "Relatorio_Avaliacao_Z4_008C.pdf"
|
| 138 |
+
pdf.output(pdf_filename)
|
| 139 |
+
|
| 140 |
+
# Retorna uma atualização para o Gradio mostrando o botão de download
|
| 141 |
+
return gr.update(value=pdf_filename, visible=True)
|
| 142 |
+
|
| 143 |
+
|
| 144 |
title = 'MOD_V_TCOND_Z4_008C (Terrenos em Condomínio)'
|
| 145 |
|
| 146 |
# Texto do cabeçalho
|