Módulo Cidade
Expandir código fonte
import re
from datetime import date
from pathlib import Path
from babel.dates import format_date
from matplotlib import pyplot as plt, image as img
from unidecode import unidecode
class Cidade:
"""Armazene nome e UF de cada cidade, dados de clima e caminhos de saída.
Esta classe é passada dentro de uma lista para as demais, que
inserem e atualizam dados para cada cidade.
"""
def __init__(self, nome, uf):
"""
Inicialize um objeto da classe Cidade.
Este método limpa os valores para nome e uf ao gravá-los no objeto
para prevenir erros no caminho dos arquivos de saída.
:param nome: nome da cidade
:param uf: sigla da unidade federativa (estado)
:raises ValueError: se a uf não for composta apenas por letras
"""
self.data = date.today()
self.data_str = str(self.data)
try:
nome_alpha = re.sub('[^a-zA-Z ]', '',
unidecode(nome.replace('-', ' ')))
self.nome = '-'.join(nome_alpha.strip().split()).lower()
self.uf = ' '.join(uf.lower().strip().split())
if not self.uf.isalpha():
raise ValueError
self.url_remota = 'http://tempo.cptec.inpe.br/' \
+ self.uf + '/' + self.nome
nome_base = self.nome + '-' + self.uf + '_' + self.data_str
self.saida_html = 'html/inpe_' + nome_base + '.html'
self.saida_csv = 'csv/inpe_' + nome_base + '.csv'
self.saida_meteograma = 'png/meteograma_' + nome_base + '.png'
self.saida_plot = 'png/plot_' + nome_base + '.png'
self.saida_plot_chuva = 'png/plot-chuva_' + nome_base + '.png'
except ValueError:
print(' [cidade.init] A UF contém caracteres inválidos')
except Exception as e:
print(str(e))
self.nome_extenso = ''
self.semana = []
self.x = []
self.y_max = []
self.y_min = []
self.chuva = []
def exibir_meteograma(self):
"""Verifique se o meteograma existe e exiba via interface gráfica."""
try:
if Path(self.saida_meteograma).exists():
plt.title('Meteograma: ' + self.nome_extenso + ', ' +
format_date(self.data, "d 'de' MMMM",
locale='pt_BR'))
im = img.imread(self.saida_meteograma)
plt.imshow(im)
plt.xticks([])
plt.yticks([])
plt.show()
except FileNotFoundError:
print(' [tratadora.exibir_meteograma] Imagem não encontrada: ' +
self.saida_meteograma)
except IOError:
print(' [tratadora.exibir_meteograma] Erro de entrada e saída')
except Exception as e:
print(' [tratadora.exibir_meteograma] ' + str(e))
Classes
class Cidade (nome, uf)
-
Armazene nome e UF de cada cidade, dados de clima e caminhos de saída.
Esta classe é passada dentro de uma lista para as demais, que inserem e atualizam dados para cada cidade.
O método construtor limpa os valores para nome e uf ao gravá-los no objeto para prevenir erros no caminho dos arquivos de saída.
atributo nome
-
nome da cidade
atributo uf
-
sigla da unidade federativa (estado).
Causa uma exceção ValueError se não for composta apenas por letras.
Expandir código fonte
class Cidade: """Armazene nome e UF de cada cidade, dados de clima e caminhos de saída. Esta classe é passada dentro de uma lista para as demais, que inserem e atualizam dados para cada cidade. """ def __init__(self, nome, uf): """ Inicialize um objeto da classe Cidade. Este método limpa os valores para nome e uf ao gravá-los no objeto para prevenir erros no caminho dos arquivos de saída. :param nome: nome da cidade :param uf: sigla da unidade federativa (estado) :raises ValueError: se a uf não for composta apenas por letras """ self.data = date.today() self.data_str = str(self.data) try: nome_alpha = re.sub('[^a-zA-Z ]', '', unidecode(nome.replace('-', ' '))) self.nome = '-'.join(nome_alpha.strip().split()).lower() self.uf = ' '.join(uf.lower().strip().split()) if not self.uf.isalpha(): raise ValueError self.url_remota = 'http://tempo.cptec.inpe.br/' \ + self.uf + '/' + self.nome nome_base = self.nome + '-' + self.uf + '_' + self.data_str self.saida_html = 'html/inpe_' + nome_base + '.html' self.saida_csv = 'csv/inpe_' + nome_base + '.csv' self.saida_meteograma = 'png/meteograma_' + nome_base + '.png' self.saida_plot = 'png/plot_' + nome_base + '.png' self.saida_plot_chuva = 'png/plot-chuva_' + nome_base + '.png' except ValueError: print(' [cidade.init] A UF contém caracteres inválidos') except Exception as e: print(str(e)) self.nome_extenso = '' self.semana = [] self.x = [] self.y_max = [] self.y_min = [] self.chuva = [] def exibir_meteograma(self): """Verifique se o meteograma existe e exiba via interface gráfica.""" try: if Path(self.saida_meteograma).exists(): plt.title('Meteograma: ' + self.nome_extenso + ', ' + format_date(self.data, "d 'de' MMMM", locale='pt_BR')) im = img.imread(self.saida_meteograma) plt.imshow(im) plt.xticks([]) plt.yticks([]) plt.show() except FileNotFoundError: print(' [tratadora.exibir_meteograma] Imagem não encontrada: ' + self.saida_meteograma) except IOError: print(' [tratadora.exibir_meteograma] Erro de entrada e saída') except Exception as e: print(' [tratadora.exibir_meteograma] ' + str(e))
Métodos
def exibir_meteograma(self)
-
Verifique se o meteograma existe e exiba via interface gráfica.
Expandir código fonte
def exibir_meteograma(self): """Verifique se o meteograma existe e exiba via interface gráfica.""" try: if Path(self.saida_meteograma).exists(): plt.title('Meteograma: ' + self.nome_extenso + ', ' + format_date(self.data, "d 'de' MMMM", locale='pt_BR')) im = img.imread(self.saida_meteograma) plt.imshow(im) plt.xticks([]) plt.yticks([]) plt.show() except FileNotFoundError: print(' [tratadora.exibir_meteograma] Imagem não encontrada: ' + self.saida_meteograma) except IOError: print(' [tratadora.exibir_meteograma] Erro de entrada e saída') except Exception as e: print(' [tratadora.exibir_meteograma] ' + str(e))