1 Introdução

Este documento relata os critérios utilizados para definição do período de análise dos dados de radiação solar incidente. Foram utilizados dados de 2000 a 2015 de 37 estações automáticas (EMAs) do Estado do Rio Grande do Sul, os dados foram fornecidos do Instituto Nacional de Meteorologia (INMET). Primeiramente será mostrado a distribuição das estações por todo o Estado, sua localização e as estações mais próximas.

2 Pacotes

Carregando pacotes necessários.

# vetor com nome dos pacotes a serem usados
pcks <- c("magrittr", "plyr", "dplyr", "tidyr", "doBy"  # manipulação de dados
          ,"lubridate", "stringr"              # manipulação de datas e strings
          ,"psych"                              # resumo estatístico dos dados
          ,"openair"                            # gráficos
          ,"rworldmap", "TeachingDemos", "ReadImages", "ggmap", "mapproj", "ggplot2" # mapas
          , "sp", "rgeos", "FNN", "spatstat", "spdep", "RANN", "geosphere"       #para as distancias
         # ,"XLConnect"                          # ler arquivos xls e xlsx
          ,"RCurl"                              # download de arquivo da internet
          ,"raster")
# looping para carregar cada pacote
invisible(
  sapply(X = pcks
         ,FUN = require
         ,character.only = TRUE
         ,quietly = TRUE)
)

Os dados são armazenados usando o Tempo Universal Coordenado UTC. Portanto, podemos definir esse horário como padrão nessa sessão do R. Assim qualquer conversão ou operação com datas e horários usando objetos POSIX serão realizadas em UTC.

# definindo globalmente tz = "UTC"
Sys.setenv(TZ = "UTC")

3 Carregando dados

# informações das EMA
state <- "RS"
info_file <- gsub("EE", state, "../output/data_inmet_SUL_2000_2015_RS_acosta.rds")
info <- readRDS(file = info_file)
glimpse(info)
## Observations: 2,806,728
## Variables: 19
## $ site  (chr) "A801", "A801", "A801", "A801", "A801", "A801", "A801", ...
## $ date  (time) 2000-09-22 00:00:00, 2000-09-22 01:00:00, 2000-09-22 02...
## $ tair  (dbl) NA, NA, NA, NA, 15.5, 15.3, 15.1, 14.8, 14.5, 14.4, 14.4...
## $ td    (dbl) NA, NA, NA, NA, 14.6, 14.5, 14.1, 13.9, 13.5, 11.9, 12.1...
## $ tmax  (dbl) NA, NA, NA, NA, 15.6, 15.6, 15.4, 15.1, 14.8, 14.7, 14.7...
## $ tdmax (dbl) NA, NA, NA, NA, 14.8, 14.6, 14.5, 14.1, 13.9, 13.5, 12.1...
## $ tmin  (dbl) NA, NA, NA, NA, 15.5, 15.3, 15.1, 14.8, 14.5, 14.3, 14.2...
## $ tdmin (dbl) NA, NA, NA, NA, 14.6, 14.5, 14.1, 13.9, 13.5, 11.9, 11.5...
## $ rh    (dbl) NA, NA, NA, NA, 94, 95, 94, 95, 94, 85, 86, 84, 76, 62, ...
## $ rhmax (dbl) NA, NA, NA, NA, 95, 95, 95, 95, 95, 94, 86, 85, 84, 74, ...
## $ rhmin (dbl) NA, NA, NA, NA, 94, 94, 94, 93, 94, 83, 82, 83, 73, 58, ...
## $ prec  (dbl) NA, NA, NA, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ p     (dbl) NA, NA, NA, NA, 1013.9, 1014.4, 1013.8, 1013.6, 1014.2, ...
## $ pmax  (dbl) NA, NA, NA, NA, 1014.2, 1014.7, 1014.7, 1014.0, 1014.2, ...
## $ pmin  (dbl) NA, NA, NA, NA, 1013.2, 1012.2, 1013.6, 1012.7, 1012.8, ...
## $ rg    (dbl) NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 16.944444, 141.1...
## $ wd    (dbl) NA, NA, NA, NA, 231, 255, 245, 246, 239, 177, 217, 166, ...
## $ wsmax (dbl) NA, NA, NA, NA, 4.4, 4.2, 4.1, 3.9, 3.3, 6.7, 7.6, 5.3, ...
## $ ws    (dbl) NA, NA, NA, NA, 1.2, 2.2, 1.9, 1.5, 1.7, 1.7, 1.8, 2.2, ...

4 Localização das estações

#criação de um dataframe com o código da estação, cidade e localização
estacoes_localiz <- data.frame(site = c("A801", "A802", "A803", "A805", "A808", "A809", "A810", "A811", "A812", "A813", "A826", "A827", "A828", "A829", "A830", "A831", "A832", "A833", "A834", "A836", "A837", "A838", "A839", "A840", "A844", "A852", "A853", "A854", "A856", "A878", "A879", "A880", "A881", "A882", "A883", "A884", "A899"),
                    cidade = c("Porto Alegre", "Rio Grande", "Santa Maria", "Santo Augusto", "Torres", "Uruguaiana", "Santa Rosa", "Canguçu", "Caçapava do Sul", "Rio Pardo", "Alegrete", "Bagé", "Erechim", "São José dos Ausentes", "São Borja", "Quarai", "São Gabriel", "Santiago", "Tramandaí", "Jaguarão", "Soledade", "Camaquã", "Passo Fundo", "Bento Gonçalves", "Lagoa Vermelha", "São Luiz Gonzaga", "Cruz Alta", "Frederico Westphalen", "Palmeira das Missões", "Mostardas", "Canela", "Vacaria", "Dom Pedrito", "Teutonia", "Ibiruba", "Campo Bom", "Chuí"), 
                    latitude = c(-30.05, -32.07, -29.72, -27.85, -29.35, -29.83, -27.89, -31.43, -30.54, -29.87, -29.70, -31.34, -27.65, -28.74, -28.65, -30.36, -30.34, -29.19, -30.01, -32.53, -28.85, -30.80, -28.22, -29.16, -28.22, -28.41, -28.60, -27.39, -27.92, -31.24, -29.36, -28.51, -30.99, -29.45, -28.65, -29.67, -33.74),
                    longitude = c(-51.17, -52.16, -53.72, -53.79, -49.73, -57.08, -54.48, -52.70, -53.46, -52.38, -55.52, -54.01, -52.30, -50.05, -56.01, -56.43, -54.31, -54.88, -50.13, -53.37, -52.54, -51.83, -52.40, -51.53, -51.51, -54.96, -53.67, -53.42, -53.91, -50.90, -50.82, -50.88, -54.81, -51.82, -53.11, -51.06, -53.37))

#para visualizar
#estacoes_localiz

#para saber a descrição do arquivo data.frame criado anteriormente
str(estacoes_localiz)
## 'data.frame':    37 obs. of  4 variables:
##  $ site     : Factor w/ 37 levels "A801","A802",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ cidade   : Factor w/ 37 levels "Alegrete","Bagé",..: 20 22 24 27 34 36 25 8 4 23 ...
##  $ latitude : num  -30.1 -32.1 -29.7 -27.9 -29.4 ...
##  $ longitude: num  -51.2 -52.2 -53.7 -53.8 -49.7 ...
#selecionando os dados de latitude e longitude para localização das EMAs
long_lat <- list(x = estacoes_localiz[,"longitude"], y = estacoes_localiz[,"latitude"])

#colocando mapa a partir de mapaz do google
long <- estacoes_localiz[,"longitude"]
lat <- estacoes_localiz[,"latitude"]
long_lat <- list(long, lat)
map <- get_map(location = c(lon = -53.72589463, lat = -29.7232836), zoom = 6)
#para viasualizar apenas o mapa/área que foi aproximado
#ggmap(map)
ggmap(map)+geom_point(aes(x = long, y = lat), data = data.frame(x=estacoes_localiz$longitude,y=estacoes_localiz$latitude),
 alpha = .5, color="darkred", size = 2)

5 Distâncias entre as estações

Para verificar a qualidade dos dados de prec é importante verificar a sua ocorrência na vizinhança da estação. Para isso podemos usar n (n = 5) estações mais próximas daquela de interesse. Portanto precisamos calcular as distâncias entre as estações.

# Funcao para calcular as n estações mais próximas
# para uma dada tabela com coordendas das emas

lat <- estacoes_localiz[,"latitude"]
long <- estacoes_localiz[,"longitude"]

#criando uma matriz com as longitudes e latitudes
long_lat3 <- cbind(long, lat)

nndist(long,lat, k=5)
##  [1] 0.9990495 1.9888187 1.2753431 1.0499524 1.4241138 2.5492156 1.1720068
##  [8] 1.3130880 1.2709445 1.2233152 1.4063072 1.3511847 1.2868955 1.3729530
## [15] 1.7083618 1.9420093 1.2835108 1.2835108 1.2725172 1.9920341 1.0565037
## [22] 1.3121738 1.2808200 0.9402127 1.2073939 1.2971122 1.1211155 1.2355566
## [29] 1.0830051 1.5781318 0.9479451 1.1738824 1.6736188 0.9372300 1.0830051
## [36] 0.9902020 3.1042068
#encontrando as estações mais próximas
#a resposta aqui nos dará a primeira coluna da própria estação, pois tecnicamente ela mesmo é a mais próxima
#e mais outras 5 colunas mostrando as 5 estações mais próximas
#na ssegunda parte desta resposta temos a distância entre as estações
nn <- get.knnx(long_lat3, query = long_lat3, k=6)

#também podemos encontrar as estações mais próximas dessa forma
closest <- nn2(data=long_lat3, k=6)[[1]]
#para visualizar
#closest

#criando tabela com as estações(site), localidade(cidade), estação mais próximas(nn[1]) e distância entre elas
#(nn[2])

#Estação mais próxima = P.nn.index.
#Distância entre as estações = D.nn.dist.

tab_est <- data.frame(Site = estacoes_localiz$site,
                      Cidade = estacoes_localiz$cidade,
                      P = nn[1],
                      D = nn[2])
#para visualizar
#tab_est
#head(tab_est)

#organizando a tabela intercalando a tabela da distância
tab_est2 <- tab_est[, c(1,2, 4, 10, 5, 11, 6, 12, 7, 13, 8, 14)]
head(tab_est2)
##   Site        Cidade P.nn.index.2 D.nn.dist.2 P.nn.index.3 D.nn.dist.3
## 1 A801  Porto Alegre           36   0.3956008           31   0.7736924
## 2 A802    Rio Grande            8   0.8373769           20   1.2944883
## 3 A803   Santa Maria           17   0.8558621            9   0.8602325
## 4 A805 Santo Augusto           29   0.1389244           28   0.5903389
## 5 A808        Torres           14   0.6888396           19   0.7717513
## 6 A809    Uruguaiana           16   0.8386895           11   1.5654073
##   P.nn.index.4 D.nn.dist.4 P.nn.index.5 D.nn.dist.5 P.nn.index.6
## 1           34   0.8845903           24   0.9600521           22
## 2           22   1.3121738           30   1.5088075           12
## 3           27   1.1211155           35   1.2316655           18
## 4            7   0.6911584           27   0.7595393           35
## 5           31   1.0900459           36   1.3679547           32
## 6           15   1.5928905           18   2.2912006           33
##   D.nn.dist.6
## 1   0.9990495
## 2   1.9888187
## 3   1.2753431
## 4   1.0499524
## 5   1.4241138
## 6   2.5492156

6 Média diária de cada estação e média total por estação

#nos fornece a radiação diária de cada estação
Rdmed_io_dly2 <- 
  info %>%
  group_by(site, month = as.Date(date)) %>%
  dplyr::summarise(Rdmed_24h_obs = mean(rg, na.rm = TRUE)
                   )
#para vizualizar
Rdmed_io_dly2
## Source: local data frame [116,947 x 3]
## Groups: site [?]
## 
##     site      month Rdmed_24h_obs
##    (chr)     (date)         (dbl)
## 1   A801 2000-09-22      474.7222
## 2   A801 2000-09-23      450.3241
## 3   A801 2000-09-24      155.5128
## 4   A801 2000-09-25      506.0470
## 5   A801 2000-09-26      510.6410
## 6   A801 2000-09-27      488.2692
## 7   A801 2000-09-28      508.0556
## 8   A801 2000-09-29      498.4188
## 9   A801 2000-09-30      340.1068
## 10  A801 2000-10-01      256.4316
## ..   ...        ...           ...
#nos fornece a média por estação em todo o período
Rdmed_io_dly3 <- 
  info %>%
  group_by(site) %>%
  dplyr::summarise(Rdmed_24h_obs = mean(rg, na.rm = TRUE)
                   )
#para visualizar
Rdmed_io_dly3
## # A tibble: 37 x 2
##     site Rdmed_24h_obs
##    <chr>         <dbl>
## 1   A801      343.0598
## 2   A802      354.4051
## 3   A803      351.4977
## 4   A805      362.3631
## 5   A808      354.4075
## 6   A809      403.2499
## 7   A810      391.3579
## 8   A811      344.6956
## 9   A812      373.8528
## 10  A813      356.1680
## # ... with 27 more rows