[R-br] r baixando dados inmet

Jônatan jdtatsch em gmail.com
Segunda Agosto 29 14:55:43 BRT 2016


Olá Rafael,
no último post
<http://r-br.2285057.n4.nabble.com/R-br-Baixando-dados-do-INMET-com-a-biblioteca-RCurl-e-bitops-Salvando-arquivos-em-txt-td4666378.html>
sobre esse tópico disponibilizei funções para download, verificação da
consistência temporal dos dados e remoção de dados duplicados. Essas
funções foram empacotadas e estão disponíveis no pacote:
https://github.com/jdtatsch/inmetr
Para instalá-lo:

library(devtools)
install_github('jdtatsch/inmetr')

Os dados baixados são sub-diários (0, 12 e 18 UTC) e incluem todas
variáveis do BDMEP:

data_description()

   varname                         description  unit
1     date           date and time information     -
2       id                          station ID     -
3     prec                       precipitation    mm
4     tair                     air temperature deg C
5       tw                wet bulb temperature deg C
6     tmax             maximum air temperature deg C
7     tmin             minimum air temperature deg C
8    urmax           maximum relative humidity     %
9     patm                atmospheric pressure   hPa
10    pnmm mean sea level atmospheric pressure   hPa
11      wd                      wind direction   deg
12   wsmax                           wind gust   m/s
13       n                      sunshine hours     h
14      cc                         cloud cover     -
15    evap                         evaporation    mm
16      ur                   relative humidity     %
17      ws                          wind speed   m/s


Para baixar vários arquivos é possível fazer um looping variando o id da
estação, baixar os dados da estação e salvá-lo em um csv.

library(inmetr)
info <- bdmep_stations()

# looping para 2 estações
lapply(info$id[1:2],
       function(i){
         # i = 82294
        Sys.sleep(sample(5:15, 1))
         x <- import_bdmep(id = i,
                            sdate = "01/01/1961",
                            edate = "29/08/2016",
                            email = "your-email",
                            passwd = "your-password")
         write.csv(x, file = paste0(i, ".csv"))
       })

Se for baixar muitos dados, recomendo fazer a noite quando o site é menos
acessado.
Att.


On Mon, Aug 29, 2016 at 12:29 PM, Rafael Tieppo via R-br <
r-br em listas.c3sl.ufpr.br> wrote:

> Algum tempo atrás o Alisson Lucrecio e o Éder Comunello estavam
> trabalhando em um tópico sobre obtenção de dados do INMET.
> Como precisei obter alguns dados hoje, resolvi testar o código, que por
> sinal funcionou perfeitamente.
> Como os dados são salvos em formato ```.html```, tentei montar um script
> organizar os dados em um ```data.frame```, assim como deixar apenas uma
> linha para cada dia de coletado, pois os dados do originais do INMET tem
> formato de duas linhas para cada dia de coleta.
>
> Segue o script com os comentários:
> obs: a função que ordena os dias é não tem uma boa performance, pois faz
> um bom tempo que fiz ela.
>
>
>
> #=================================================================
> #                          Rafael Tieppo
> #                          rafaelt em unemat.br
> #                          http://docente.unemat.br/rafaeltieppo/
> #                          29-08-2016
> #=================================================================
>
>
> ##### Goal 1
> ### Script to sign in - INMET
> ### Historical Data
> ### Original Source:
> ### http://r-br.2285057.n4.nabble.com/R-br-r-baixando-dados-
> inmet-td4660459.html
> ### http://r-br.2285057.n4.nabble.com/R-br-RCurl-td4659610.html
> ##### Goal 2
> ### Ordering and filtering DATA from INMET
> ### use oneline() function from
> ### from https://github.com/rafatieppo/INMET_DATA_ORDER
>
>
>
> #************************************************************
> #************************************************************
>                                         # GOAL 1
> #************************************************************
> #************************************************************
>
>
> #------------------------------------------------------------
> ### Packages
> library(RCurl)
> library(bitops)
> #------------------------------------------------------------
>
>
> #------------------------------------------------------------
> ### Logging INMET
>
> ### Login link
> myURL1 <- "http://www.inmet.gov.br/projetos/rede/pesquisa/inicio.php"
> ### Data link
> myURL2 <- "http://www.inmet.gov.br/projetos/rede/pesquisa/gera_
> serie_txt.php?&mRelEstacao=83309&btnProcesso=serie&
> mRelDtInicio=01/01/2015&mRelDtFim=29/08/2016&mAtributos=,,1,1,,,,,,1,1,,1,
> 1,1,1,"
> #------------------------------------------------------------
>
>
> #------------------------------------------------------------
> ### Access Data
>
> myParams=list(
>   mCod="EMAIL", ### alterar!
>   mSenha="PASSWORD", ### alterar!
>   btnProcesso = " Acessar ")
> #------------------------------------------------------------
>
>
> #------------------------------------------------------------
> ### Getting Data
>
> myCurl <- getCurlHandle()
> curlSetOpt(cookiejar="cookies.txt", useragent="Chrome/10.0.648.133" ,
> followlocation=TRUE, curl=myCurl)
> ###"Mozilla/5.0"
>
> login <- postForm(myURL1, .params=myParams, curl=myCurl)
>
> DATA <- getURLContent(myURL2, curl=myCurl)
> #------------------------------------------------------------
>
>
>
> #************************************************************
> #************************************************************
>                                         # GOAL 2
> #************************************************************
> #************************************************************
>
> #------------------------------------------------------------
> ### Tiding Data
>
> ### Using shell script to separate DATA from text
> #### grep "^83309" < ESTACAO_83309.html > ESTACAO_83303_DATA.csv
> ### Shell script, get all lines that starts with "83309" (station number)
>
> SHELL_FUN = paste("grep", "^83309", "<", "ESTACAO_83309.html",
>                   ">", "ESTACAO_83303_DATA.csv",
>                   sep = ' ')
> ###
> system(SHELL_FUN)
>
> DATA_83303 <- read.csv("ESTACAO_83303_DATA.csv", sep = ";", dec = ".")
>
> colnames(DATA_83303) <-  c("Estacao", "Data", "Hora", "Precipitacao",
>                            "TempMaxima", "TempMinima", "Insolacao",
>                            "Evaporacao_Piche", "Temp_Comp_Media",
>                            "UR_Media", "Vel_Vent_Media")
>
> names(DATA_83303)
> #------------------------------------------------------------
>
>
> #------------------------------------------------------------
> ### Organizing DATA
> ### Data from INMET has two lines for each
> ### To put one line for each day, use oneline() function
> ### Calling ONE_LINE function
> ### from https://github.com/rafatieppo/INMET_DATA_ORDER
>
> ### ATTENTION
> ### To use oneline() is mandatory a data.frame with a specific cols data
> ### order, as follow (names doen not matter, only sequence):
>
> ### Estacao; Data; Hora; Precipitacao; TempMaxima; TempMinima;
> ### Insolacao; Umidade Relativa Media; Velocidade do Vento Media;
>
> DATA_83303 <- DATA_83303[c(1:7,10:11)]
>
> Estacao;Data;Hora;Precipitacao;TempMaxima;TempMinima;Insolacao;Evaporacao
> Piche;Temp Comp Media;Umidade Relativa Media;Velocidade do Vento Media;
>
> ### Ordering with oneline() function
>
> DATA_83303_one_line <- one_line(DATA_83303)
>
> edit(DATA_83303_one_line)
>
> #------------------------------------------------------------
>
>
>
>
>
>
>
>
>
>
>
>
> Rafael Tieppo
> State University of Mato Grosso - Department of Agricultural Engineering
> site: http://docente.unemat.br/rafaeltieppo/ *blog*:
> https://fuidebicicleta.wordpress.com
> "Evite o desperdício: antes de imprimir pense na sua responsabilidade com
> o ambiente".
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>



-- 
###############################################################
##  Jônatan Dupont Tatsch
##  Professor do Departamento de Física
##  Centro de Ciências Exatas e Naturais (CCNE)
##  Universidade Federal de Santa Maria - UFSM
##  Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil -
97105-900
##  Telefone: +55(55)33012083
##  www.ufsm.br/meteorologia
###############################################################
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160829/424ea12a/attachment.html>


Mais detalhes sobre a lista de discussão R-br