DavidSB commited on
Commit
826ee89
1 Parent(s): 3bf3fee

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -3
app.py CHANGED
@@ -10,8 +10,11 @@ from reportlab.platypus import SimpleDocTemplate, Paragraph
10
  from reportlab.lib.styles import getSampleStyleSheet
11
  import shutil
12
  import os
 
13
 
14
 
 
 
15
  # Function to save results in a PDF file
16
  def save_results_to_pdf(results_formatados, intervalo_confiança, valores_finais):
17
  doc = SimpleDocTemplate("resultados.pdf", pagesize=letter)
@@ -34,6 +37,8 @@ def save_results_to_pdf(results_formatados, intervalo_confiança, valores_finais
34
 
35
  # Build the PDF
36
  doc.build(elements)
 
 
37
 
38
  def renderizar_dataframe(df):
39
  try:
@@ -49,7 +54,45 @@ def renderizar_dataframe(df):
49
  return tabela_com_rolagem
50
  except Exception as e:
51
  return f"Erro ao processar o DataFrame: {str(e)}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  # Função de avaliação do imóvel
55
  def avaliacao_imovel(planilha, num_linhas_desejadas=10):
@@ -95,7 +138,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
95
  df_area_terreno['fat'] = round((df_area_terreno['razao']) ** (df_area_terreno['n']), 2)
96
  df_area_terreno = df_area_terreno[['fat']]
97
 
98
- #-----------------#
99
 
100
  # fator topografia (ftp)
101
  # dicionário topografia
@@ -228,7 +271,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
228
  result = pd.concat([df_dados, df_transp, df_area_const, df_area_terreno, df_topografia, df_idade_cons, df_padrao, df_vaga, df_exc], axis=1)
229
  result['Valor_desc'] = round(result['Valor']*(result['fof']), 2)
230
  result['Vunit'] = round((result['Valor_desc']/result['Área Construída']), 2)
231
- result = result[['Atratividade local', 'Área Construída', 'Área Terreno', 'Topografia',
232
  'Idade aparente e conservação', 'Padrão construtivo', 'Vagas',
233
  'Coeficiente extra', 'Valor', 'fof','Valor_desc', 'Vunit','fal', 'fac', 'fat', 'ftp', 'fic',
234
  'fpd', 'fvg', 'fex']]
@@ -501,6 +544,11 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
501
  result_valores.columns = ['Nome da Coluna', 'Valor']
502
  result_valores.to_excel(writer, sheet_name='valor', index=False)
503
 
 
 
 
 
 
504
  #-----------------#
505
 
506
  # Salve o DataFrame 'result' em uma planilha
@@ -515,7 +563,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=10):
515
  #-----------------#
516
 
517
  # Retorna tanto a planilha quanto os resultados formatados
518
- return output_file, 'resultados.pdf', result_render, resultados_formatados, intervalo_confiança, valores_finais
519
 
520
 
521
  # Interface do Gradio com input como arquivo XLS ou XLSX
@@ -532,6 +580,7 @@ interface = gr.Interface(
532
  gr.components.Textbox(label="Resultados estatísticos"),
533
  gr.components.Textbox(label="Intervalo de confiança de 80%"),
534
  gr.components.Textbox(label="Valores Calculados"),
 
535
 
536
  ],
537
  live=True,
 
10
  from reportlab.lib.styles import getSampleStyleSheet
11
  import shutil
12
  import os
13
+ import plotly.express as px
14
 
15
 
16
+ #-----------------#
17
+
18
  # Function to save results in a PDF file
19
  def save_results_to_pdf(results_formatados, intervalo_confiança, valores_finais):
20
  doc = SimpleDocTemplate("resultados.pdf", pagesize=letter)
 
37
 
38
  # Build the PDF
39
  doc.build(elements)
40
+
41
+ #-----------------#
42
 
43
  def renderizar_dataframe(df):
44
  try:
 
54
  return tabela_com_rolagem
55
  except Exception as e:
56
  return f"Erro ao processar o DataFrame: {str(e)}"
57
+
58
+ #-----------------#
59
+
60
+ def plotar_mapa_com_dois_dataframes(df1, df2):
61
+ fig1 = px.scatter_mapbox(
62
+ df1,
63
+ lat='lat',
64
+ lon='lon',
65
+ zoom=15,
66
+ center={"lat": df1['lat'].mean(), "lon": df1['lon'].mean()},
67
+ color_discrete_sequence=['#008B8B'],
68
+ )
69
+
70
+ fig1.update_traces(marker=dict(size=10)) # Define o tamanho dos marcadores para o DataFrame 1
71
+
72
+ fig2 = px.scatter_mapbox(
73
+ df2,
74
+ lat='lat',
75
+ lon='lon',
76
+ color_discrete_sequence=['orange'],
77
+ )
78
+
79
+ fig2.update_traces(marker=dict(size=20)) # Define o tamanho dos marcadores para o DataFrame 2
80
 
81
+ # Combine as duas figuras em uma única figura
82
+ for data in fig2.data:
83
+ fig1.add_trace(data)
84
+
85
+ # Personalize o layout do mapa, se desejar
86
+ fig1.update_layout(
87
+ mapbox_style="carto-positron",
88
+ )
89
+
90
+ # Mostrar o mapa
91
+ fig1.show()
92
+
93
+ return fig1
94
+
95
+ #-----------------#
96
 
97
  # Função de avaliação do imóvel
98
  def avaliacao_imovel(planilha, num_linhas_desejadas=10):
 
138
  df_area_terreno['fat'] = round((df_area_terreno['razao']) ** (df_area_terreno['n']), 2)
139
  df_area_terreno = df_area_terreno[['fat']]
140
 
141
+ #-----------------#
142
 
143
  # fator topografia (ftp)
144
  # dicionário topografia
 
271
  result = pd.concat([df_dados, df_transp, df_area_const, df_area_terreno, df_topografia, df_idade_cons, df_padrao, df_vaga, df_exc], axis=1)
272
  result['Valor_desc'] = round(result['Valor']*(result['fof']), 2)
273
  result['Vunit'] = round((result['Valor_desc']/result['Área Construída']), 2)
274
+ result = result[['lat','lon','Atratividade local', 'Área Construída', 'Área Terreno', 'Topografia',
275
  'Idade aparente e conservação', 'Padrão construtivo', 'Vagas',
276
  'Coeficiente extra', 'Valor', 'fof','Valor_desc', 'Vunit','fal', 'fac', 'fat', 'ftp', 'fic',
277
  'fpd', 'fvg', 'fex']]
 
544
  result_valores.columns = ['Nome da Coluna', 'Valor']
545
  result_valores.to_excel(writer, sheet_name='valor', index=False)
546
 
547
+ #-----------------#
548
+
549
+ mapa = plotar_mapa_com_dois_dataframes(result, df_avaliando)
550
+ #mapa = criar_mapa(df_avaliando) #novo
551
+
552
  #-----------------#
553
 
554
  # Salve o DataFrame 'result' em uma planilha
 
563
  #-----------------#
564
 
565
  # Retorna tanto a planilha quanto os resultados formatados
566
+ return output_file, 'resultados.pdf', result_render, resultados_formatados, intervalo_confiança, valores_finais, mapa #novo
567
 
568
 
569
  # Interface do Gradio com input como arquivo XLS ou XLSX
 
580
  gr.components.Textbox(label="Resultados estatísticos"),
581
  gr.components.Textbox(label="Intervalo de confiança de 80%"),
582
  gr.components.Textbox(label="Valores Calculados"),
583
+ gr.Plot(label="Geolocalização da amostra"), #novo
584
 
585
  ],
586
  live=True,