14
25/09/2020 17:47 Gabarito_P2 Página 1 de 14 http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false Trabalhando com dados Fluviométricos do Córrego da Pedreira Os dados de vazão são essenciais para avaliação do balanço hidrológico em bacias hidrográficas. Entretanto, realizar medições fluviométricas diretas periodicamente é um desafio, devido aos custos operacionais. Sendo assim, uma forma indireta de obter dados de vazão é medindo a altura da lâmina d'água e a área da seção transversal do escoamento. A leitura do nível d'água pode ser obtida de maneira automática com sensores eletrônicos. A figura abaixo à direita ilustra um sensor ultrassônico instalado em uma seção canalizada do córrego da Pedreira, um afluente do rio Belém. O sistema de medição registra a leitura da distância entre o sensor e a lâmina d'água (linha vermelha na figura da esquerda abaixo). Os dados são obtidos periodicamente e salvos em um cartão de memória.

Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 1 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

Trabalhando com dados Fluviométricos do Córregoda PedreiraOs dados de vazão são essenciais para avaliação do balanço hidrológico em bacias hidrográficas.Entretanto, realizar medições fluviométricas diretas periodicamente é um desafio, devido aos custosoperacionais. Sendo assim, uma forma indireta de obter dados de vazão é medindo a altura da lâminad'água e a área da seção transversal do escoamento. A leitura do nível d'água pode ser obtida demaneira automática com sensores eletrônicos.

A figura abaixo à direita ilustra um sensor ultrassônico instalado em uma seção canalizada do córrego daPedreira, um afluente do rio Belém. O sistema de medição registra a leitura da distância entre o sensor ea lâmina d'água (linha vermelha na figura da esquerda abaixo). Os dados são obtidos periodicamente esalvos em um cartão de memória.

Page 2: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 2 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

Page 3: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 3 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

Com a utilização do sensor ultrassônico, foram realizadas leituras de nível em intervalos de 15 segundos,entre os dias 05/08 e 30/08. Analisando os dados brutos observam-se alguns dados espúrios,necessitando que os mesmos sejam tratados e filtrados antes de serem utilizandos para os cálculos devazão.

Exercício I: Organizar os dados de medição de nível, seguindo os seguintes passos:

1. Leitura dos dados de distância (linha vermelha da figura acima à esquerda) do arquivo CSV. Oarquivo CSV contém uma coluna para a data e hora (no formado ddmmaaaa HH:MM:SS) e outracoluna com os dados de distância em centímetros. Você pode acessá-lo no link:(https://www.dropbox.com/s/htfwy819slzcxkt/dados_ultrassonico.csv?dl=0(https://www.dropbox.com/s/htfwy819slzcxkt/dados_ultrassonico.csv?dl=0)). Nessa seção o/adiscente deverá fazer 3 coisas:

a) Criar um Dataframe e nomear o título das colunas de acordo com a lista: ['data_hora','dist_cm']

b) Definir a coluna 'data_hora' como o índice do dataframe.

c) A coluna 'data_hora' deverá ser configurada como o formato de data padrão: aaaa-mm-ddHH:MM:SS

1. Filtragem dos dados espúrios (errôneos). Existem algumas medições onde a distância foi registradacomo zero e outras medições em que a distância aparece maior do que 100 cm. O filtro deve serconstruído para retirar os valores zero e os valores acima de 100 cm. Nessa seção o/a discentedeverá responder: Quantas linhas foram retiradas do Dataframe?

2. Calcular os valores de nível com base nas medições de distância considerando a distância totalentre o sensor e o fundo do canal de 83,80 centímetros (linha verde da figura acima à esquerda).Nessa seção o/a discente deverá criar uma nova coluna no Dataframe intitulada 'dist_cm'com altura da lâmina d'água para cada medição. Além disso, deverá ser calculada a média donível d'água.

1. Calcular a Média horária dos dados de nível. Não é para calcular o perfil diário (média horária detodos os dias). É para calcular a média de cada intervalo de 60 minutos entre os dias 05/08 e 30/08.Nessa seção o/a discente deverá criar um gráfico das médias horárias ao longo do tempo

2. Calcular a Média diária dos dados de nível. Nessa seção o/a discente deverá criar um gráficodas médias diárias ao longo do tempo

1. Leitura dos dados da distância do sensor até a lâmina d'água (medidasem campo com o sensor ultrassônico)

In [1]: from matplotlib import pyplot as pltimport matplotlib.dates as mdatesimport numpyimport pandas%matplotlib inline

Page 4: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 4 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [2]: from urllib.request import urlretrieveURL = 'https://www.dropbox.com/s/htfwy819slzcxkt/dados_ultrassonico.csv?dl=1'urlretrieve(URL, 'dados_ultrassonico.csv')

In [3]: !head "dados_ultrassonico.csv"

dateparse = lambda x: pandas.datetime.strptime(x, ' %d%m%Y %H:%M:%S')dados = pandas.read_csv("dados_ultrassonico.csv",index_col=0,sep=';', header=None, names=['data_hora','dist_cm'],date_parser=dateparse)

Out[2]: ('dados_ultrassonico.csv', <http.client.HTTPMessage at 0x7fe395f9bda0>)

05082020 17:10:03;65.1 05082020 17:25:03;65.04 05082020 17:40:02;65.2 05082020 17:55:01;64.95 05082020 18:10:01;65.03 05082020 18:25:00;64.91 05082020 18:40:00;65 05082020 18:54:59;64.85 05082020 19:09:58;65.75 05082020 19:24:58;65.41

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:3: FutureWarning: The pandas.datetime class is deprecated and will be removed from pandas in a future version. Import from datetime instead. This is separate from the ipykernel package so we can avoid doing imports until

Page 5: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 5 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [4]: dados

2.Filtragem dos dados espúrios

In [5]: type(dados)

Out[4]:dist_cm

data_hora

2020-08-05 17:10:03 65.10

2020-08-05 17:25:03 65.04

2020-08-05 17:40:02 65.20

2020-08-05 17:55:01 64.95

2020-08-05 18:10:01 65.03

... ...

2020-08-30 17:14:47 68.23

2020-08-30 17:29:46 68.51

2020-08-30 17:44:45 67.84

2020-08-30 17:59:45 68.10

2020-08-30 18:14:44 69.59

2123 rows × 1 columns

Out[5]: pandas.core.frame.DataFrame

Page 6: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 6 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [6]: dados_filtrados = dados.loc[(dados['dist_cm'] > 1.0) & (dados['dist_cm'] < 100.0)]dados_filtrados

In [7]: len(dados)

In [8]: len(dados_filtrados)

In [9]: print(len(dados)-len(dados_filtrados))

1. Cálculo do Nível

Out[6]:dist_cm

data_hora

2020-08-05 17:10:03 65.10

2020-08-05 17:25:03 65.04

2020-08-05 17:40:02 65.20

2020-08-05 17:55:01 64.95

2020-08-05 18:10:01 65.03

... ...

2020-08-30 17:14:47 68.23

2020-08-30 17:29:46 68.51

2020-08-30 17:44:45 67.84

2020-08-30 17:59:45 68.10

2020-08-30 18:14:44 69.59

2082 rows × 1 columns

Out[7]: 2123

Out[8]: 2082

41

Page 7: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 7 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [10]: dados_filtrados['nivel_cm'] = 83.80 - dados_filtrados['dist_cm']

In [11]: dados_filtrados

In [12]: dados_filtrados['nivel_cm'].mean()

1. Média Horária

In [13]: dados_filtrados.index = pandas.to_datetime(dados_filtrados.index)nivel_medio_horario = dados_filtrados.resample('1h').mean()nivel_medio_diario = dados_filtrados.resample('24h').mean()

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy """Entry point for launching an IPython kernel.

Out[11]:dist_cm nivel_cm

data_hora

2020-08-05 17:10:03 65.10 18.70

2020-08-05 17:25:03 65.04 18.76

2020-08-05 17:40:02 65.20 18.60

2020-08-05 17:55:01 64.95 18.85

2020-08-05 18:10:01 65.03 18.77

... ... ...

2020-08-30 17:14:47 68.23 15.57

2020-08-30 17:29:46 68.51 15.29

2020-08-30 17:44:45 67.84 15.96

2020-08-30 17:59:45 68.10 15.70

2020-08-30 18:14:44 69.59 14.21

2082 rows × 2 columns

Out[12]: 17.13282901056676

Page 8: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 8 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [14]: nivel_medio_horario[0:6]

In [15]: plt.figure(figsize=(10,5))plt.plot(nivel_medio_horario['nivel_cm'],color='blue')#plt.xlabel('nivel (cm)')plt.ylabel('nivel (cm)');

1. Média Horária

Out[14]:dist_cm nivel_cm

data_hora

2020-08-05 17:00:00 65.072500 18.727500

2020-08-05 18:00:00 64.947500 18.852500

2020-08-05 19:00:00 65.472500 18.327500

2020-08-05 20:00:00 65.017500 18.782500

2020-08-05 21:00:00 65.206667 18.593333

2020-08-05 22:00:00 65.210000 18.590000

Page 9: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 9 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [16]: nivel_medio_diario[0:6]

In [17]: plt.figure(figsize=(10,5))plt.plot(nivel_medio_diario['nivel_cm'],color='blue')#plt.xlabel('nivel (cm)')plt.ylabel('nivel (cm)');

Exercício II: Com os dados já tratados, agora pode-se utilizar de métodos empíricos para o cálculo davazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e adeclividade é de 1,27% (0.73°).

Realizar o cálculo da vazão ( ) associada ao escoamento no canal circular utilizando os dados horáriosde nível. Uma aproximação da vazão pode ser obtida aplicando a equação de Manning:

!!

! = "# $2/3%1/2

Out[16]:dist_cm nivel_cm

data_hora

2020-08-05 65.107778 18.692222

2020-08-06 64.665532 19.134468

2020-08-07 64.131286 19.668714

2020-08-08 NaN NaN

2020-08-09 NaN NaN

2020-08-10 68.856042 14.943958

Page 10: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 10 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

Sendo que é a velocidade do escoamento, é o raio hidráulico, é a declividade do fundo do canale é o coeficiente de rugosidade de Gauckler–Manning. Considere que o valor do coeficiente deGauckler–Manning é s/m .

Para obter a vazão o/a discente deverá realizar o produto da velocidade e da área.

Observe a figura abaixo e identifique as variáveis: (diâmetro do tubo), (raio do tubo), (altura dalâmina d'água) e (ângulo em relação ao centro do tubo).

Para proceder com os cálculos sugere-se :

1. Calcular (em radianos) de acordo com as fórmulas abaixo, sendo que é a altura da lâminad'água.

2. Cálculo da área molhada3. Cálculo do perímetro molhado4. Cálculo do raio hidráulico5. Cálculo da velocidade média6. Cálculo da vazão

A seguir são apresentadas algumas equações que podem ser úteis nos cálculos.

O raio ( ) é a metade do diâmetro ( ):

O ângulo deverá ser calculado em radianos e pode ser obtido de acordo com a equação:

A área da seção transversal do escoamento ( ) é:

O perímetro molhado ( ) é:

& $ %#

# = 0.2 1/3

' ( ℎ*

* ℎ

( '( = '

2*

* = 2 arc cos ( )( − ℎ(

"

" = (* − sen*)(2

2+

+ = (*

Page 11: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 11 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

O raio hidráulico ( ) é:

Sugestão de leitura de material com as equações(https://www.cedengineering.com/userfiles/Partially%20Full%20Pipe%20Flow%20Calculations.pdf).

No final do exercício II o/a discente deverá fazer 3 coisas:

a) Mostrar um gráfico da vazão horária (m3/s) ao longo do tempo. (não é o perfil diário de vazão).

b) Mostrar um histograma da Vazão horária (m3/s).

c) Calcular a mediana da Vazão horária (m3/s)

$ℎ

=$ℎ"+

Solução:

In [18]: numpy.arctan(0.24/18.82)

In [19]: import numpy

nivel = nivel_medio_horario['nivel_cm'].values/100.0

theta = 2*numpy.arccos((0.75-nivel)/0.75)

area = (0.75**2)*(theta-numpy.sin(theta))/2.0

perimetro = 0.75*theta

raio_hidraulico = area/perimetro

vazao = (area/0.2) * raio_hidraulico**(2/3) * 0.0127**(1/2)

nivel_medio_horario['theta'] = thetanivel_medio_horario['area'] = areanivel_medio_horario['perimetro'] = perimetronivel_medio_horario['raio_hidraulico'] = raio_hidrauliconivel_medio_horario['vazao(m3/s)'] = vazao

Out[18]: 0.012751699861372612

Page 12: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 12 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [20]: nivel_medio_horario

Out[20]:dist_cm nivel_cm theta area perimetro raio_hidraulico vazao(m3/s)

data_hora

2020-08-05

17:00:0065.072500 18.727500 1.444561 0.127271 1.083421 0.117471 0.017201

2020-08-05

18:00:0064.947500 18.852500 1.449596 0.128512 1.087197 0.118205 0.017441

2020-08-05

19:00:0065.472500 18.327500 1.428352 0.123322 1.071264 0.115119 0.016444

2020-08-05

20:00:0065.017500 18.782500 1.446778 0.127817 1.085084 0.117794 0.017306

2020-08-05

21:00:0065.206667 18.593333 1.439141 0.125942 1.079356 0.116683 0.016945

... ... ... ... ... ... ... ...

2020-08-30

14:00:0068.407500 15.392500 1.304347 0.095522 0.978260 0.097645 0.011413

2020-08-30

15:00:0068.697500 15.102500 1.291551 0.092893 0.968663 0.095898 0.010966

2020-08-30

16:00:0069.000000 14.800000 1.278087 0.090175 0.958565 0.094073 0.010510

2020-08-30

17:00:0068.170000 15.630000 1.314747 0.097692 0.986060 0.099073 0.011786

2020-08-30

18:00:0069.590000 14.210000 1.251468 0.084944 0.938601 0.090500 0.009648

602 rows × 7 columns

Page 13: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 13 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [21]: plt.figure(figsize=(10,5))plt.plot(nivel_medio_horario['vazao(m3/s)'],color='blue')plt.ylabel('Vazão (m3/s)');

In [22]: nivel_medio_horario['vazao(m3/s)'].median()

Out[22]: 0.012682710965348416

Page 14: Trabalhando com dados Fluviométricos do Córrego da Pedreira · 2020. 9. 25. · vazão. Considere que o córrego está canalizado em uma manilha de 1.50 metros de diâmetro, e a

25/09/2020 17:47Gabarito_P2

Página 14 de 14http://localhost:8888/nbconvert/html/Downloads/Gabarito_P2.ipynb?download=false

In [23]: plt.figure(figsize=(10,5))plt.hist(nivel_medio_horario['vazao(m3/s)'],bins=20,color='blue',histtype='bar',edgecolor='white')plt.xlabel('Vazão (m3/s)')plt.ylabel('Frequência');

In [23]:

/usr/local/lib/python3.6/dist-packages/numpy/lib/histograms.py:839: RuntimeWarning: invalid value encountered in greater_equal keep = (tmp_a >= first_edge)/usr/local/lib/python3.6/dist-packages/numpy/lib/histograms.py:840: RuntimeWarning: invalid value encountered in less_equal keep &= (tmp_a <= last_edge)