Lendo os dados observados
# all.vars <- readRDS("~/Dropbox/Dissertacao/EstSP.MG_2001-2014_FINAL.rds")
info <- readRDS("~/Dropbox/Dissertacao/1_EstSP.MG_2001-2014_info.rds") basin_name <- "mogu"
# basin_name <- "pauliceia" # Carregando Modelo Digital de Elevação do Terreno (MDET)
wsdem <- raster(paste("../MODIS/wsdem_",basin_name,".asc",sep ="" ))
# wsdem <- raster("../MODIS/wsdem.asc")
# Corrigindo extent do wsdem (as coordenadas devem ser centradas)
fake.ext <- extent(wsdem)
fake.ext <- c(-(fake.ext[2]-fake.ext[1])/2,(fake.ext[2]-fake.ext[1])/2,
-(fake.ext[4]-fake.ext[3])/2,(fake.ext[4]-fake.ext[3])/2)
extent(wsdem) <- fake.ext
# Carregando as projeções do arquivo
# Lat/Lon
basin_lonlat <- raster(paste("../MODIS/mdet_",basin_name,".tif",sep ="" ))
plot(basin_lonlat,
main = "Domínio da Bacia e linhas centrais")
abline(v = mean(extent(basin_lonlat)[1:2]))
abline(h = mean(extent(basin_lonlat)[3:4])) lonlat <- projection(basin_lonlat)
# Lambert Azimutal
basin_laea <- raster(paste("../MODIS/mdet_",basin_name,"_laea_int.tif",sep ="" ))
plot(basin_laea) # abline(v = 0.0, h = 0.0)
laea <- projection(basin_laea)
# Atribuindo a projeção laea ao arquivo raster da bacia
projection(wsdem) <- laea
# Reprojectando a Lat/Lon
wsdem <- projectRaster(from = wsdem,crs = laea )
wsdem <- projectRaster(from = wsdem,crs = lonlat )
plot(wsdem/1000, main = "Elevação Digital do Terreno (km)")
# Criando Shapefile da bacia MoGu
wsdem_shp <- reclassify(wsdem , c(0,2000,0)) %>%
rasterToPolygons(dissolve = TRUE)## Loading required package: rgeos
## rgeos version: 0.3-15, (SVN revision 515)
## GEOS runtime version: 3.4.2-CAPI-1.8.2 r3921
## Linking to sp version: 1.2-1
## Polygon checking: TRUE
##
## Attaching package: 'rgeos'
## The following object is masked from 'package:Hmisc':
##
## translate
plot(wsdem_shp, add = TRUE) # Raster com a mesma resolução que "wsdem"
r <- raster(resolution = res(wsdem))
# determinando cobertura espacial das estações INMET
extent.estacoes <- extent(min(info$lon), max(info$lon) , min(info$lat), max(info$lat) )
# recortando raster a área espacial das estações
r <- crop(r, extent.estacoes)
# rasterizando coordenadas das estações
p <- info[,c("lon","lat")]
coordinates(p) <- ~lon+lat
estacoes <- rasterize(p,r)
# domínio da bacia MoGu e localização das estações
plot(wsdem)
text(estacoes,col = "black") plot(estacoes, col = "black", legend = FALSE)
plot(wsdem, add = TRUE)
text(estacoes, col = "black") # Codigo da Bacia (ANA)
if(basin_name %in% c("mogu", "pauliceia")) basin_id <- 6
# Diretótio da Bacia
basin_path <- gsub(pattern = "X",
replacement = basin_id,
x = "~/DBHM/data_process/geo_data/data_base/ANA/BaciaX")
# Listando os arquivos shape
shapefiles_list <- list.files(basin_path,
pattern = "shp$",
recursive = T,
full.names = T) # Arquivo das Grandes Bacias Hidrogŕaficas
basin_file <- grep(x = shapefiles_list,
pattern = paste("Bacia", basin_id),
value = T)
# Shapfile de estações fluviométricas
flu_file <- grep(x = shapefiles_list,
pattern = "Est_Fluviometricas_ANA_2010",
value = T)
# Shapefile de Rede de Drenagem
dren_file <- grep(x = shapefiles_list,
pattern = "Hidrografia 1000000",
value = T)
# Shapefiles de Ottobacias (níveis 1,2 e 4)
otto1_file <- "~/DBHM/data_process/geo_data/data_base/ANA/Ottobacias_Nivel1/Ottobacias_Nivel1.shp"
otto2_file <- "~/DBHM/data_process/geo_data/data_base/ANA/Ottobacias_Nivel2/Ottobacias_Nivel2.shp"
otto4_file <- "~/DBHM/data_process/geo_data/data_base/ANA/Ottobacias_Nivel4/Ottobacias_Nivel4.shp"
# nome do arquivo com delimitação dos estados brasileiros
br_states_file <- "~/DBHM/data_process/geo_data/data_base/br_states.rds"
# importa delimitação dos estados brasileiros
br_states <- readRDS(file = br_states_file)
# estacoes flu (vazao)
flu <- shapefile(flu_file, encoding="latin1")
# projetando flu para lonlat para salvar como kml
flu <- spTransform(x = flu, CRSobj = CRS(proj4string(br_states)))
# bacia brasileira
basin <- shapefile(basin_file, encoding="latin1")
# projetando basin para lonlat para salvar como kml
basin <- spTransform(x = basin, CRSobj = CRS(proj4string(br_states)))
# rede de drenagem
dren <- shapefile(dren_file, encoding="latin1")
# selecionando somente as variáveis de interesse no slot de dados
# do objeto dren (SpatialLinesDataFrame)
dren@data <- subset(dren@data, sel = c("NORIO", "NORIOCOMP", "COBACIA", "CORIO"))
# projetando dren para lonlat para salvar como kml
dren <- spTransform(x = dren, CRSobj = CRS(proj4string(br_states)))
# gerando arquivo KML para visualização no google-earth
KML(x = crop(dren,wsdem_shp), file = paste0("./","dren.kml"), overwrite = TRUE)
# ottobacias
otto1 <- shapefile(otto1_file, encoding="latin1")
otto2 <- shapefile(otto2_file, encoding="latin1")
otto2 <- spTransform(x = otto2, CRSobj = CRS(proj4string(br_states)))
otto4 <- shapefile(otto4_file, encoding="latin1")
otto4 <- spTransform(x = otto4, CRSobj = CRS(proj4string(br_states)))
# gerando arquivo KML para visualização no google-earth
KML(x = otto4, file = paste0("./","otto4.kml"), overwrite = TRUE)
# Bacia Hidrográfica
wsdem_shp_br <- spTransform(x = wsdem_shp, CRSobj = CRS(proj4string(br_states)))
# gerando arquivo KML para visualização no google-earth
KML(x = wsdem_shp, file = paste0("./",basin_name,".kml"), overwrite = TRUE) # estados
plot(crop(br_states ,extent(estacoes)), border = "white", col = "gray", lwd = 2, axes = T)
# ottobacias nível de divisão 4
plot(crop(otto4 ,extent(estacoes)), add = T, border = "blue")
# ottobacias nível de divisão 2
plot(crop(otto2 ,extent(estacoes)), add = T, border = "red", lwd = 3)
# ottobacias nível de divisão 1
plot(crop(otto1 ,extent(estacoes)), add = T, border = "black", lwd= 4)
# estações em numero na tabelo info
text(estacoes, col = "black")
# contorno da bacia
plot(wsdem_shp, add = TRUE, border = "green") polys <- as.data.frame(wsdem_shp@polygons[[1]]@Polygons[[1]]@coords)
# Mapa interativo com localização das estações
gmap(lat = mean(extent(basin_lonlat)[3:4]),
lng = mean(extent(basin_lonlat)[1:2]), zoom = 7,
width = 900, height = 800,
# map_type = "satellite",
map_type = "hybrid",
tools = c("pan","wheel_zoom","box_zoom","reset","resize")) %>%
ly_points(lon, lat, data = info, hover = c(site,alt,name), col = "red") %>%
ly_polygons(xs = x, ys = y, data = polys, color = "yellow", fill_alpha = 0 ) %>%
ly_abline(v = (info[info$site == "X001","lon" ])) %>%
ly_abline(h = (info[info$site == "X001","lat" ])) %>%
tool_lasso_select(select_every_mousemove = TRUE) %>%
tool_save()## xlim not specified explicitly... calculating...
## ylim not specified explicitly... calculating...
# Extraindo coordenadas Lat/Lon de cada celula do raster
how.many.station.in.each.cell <- data.frame( xyFromCell(cell = 1:ncell(wsdem),object = wsdem) )
cell.distance <- sapply(info$site, function(i){
b <- distGeo(p1 = how.many.station.in.each.cell[,1:2],
p2 = info[info$site == i, c("lon","lat")])
b
})
cell.distance <- as.data.frame(cell.distance)plot.raio.est <- function(raio = 100000,
cell.distance = cell.distance
){
cat("Raio seleçoado:", raio,"m\n")
cat("Construindo fatores \n")
# Juntando o codigo das estações com distância menor que o raio à célula
factor <- sapply(1:length(cell.distance[,1]),function(i){
paste0(names(cell.distance)[which(cell.distance[i,] <= raio)], collapse = "")
})
# Determinando as combinações únicas de estações para cada célula.
unique.factor <- data.frame(id = 1:length(unique(factor)),
code = unique(factor))
cat("Determinados", length(unique.factor$id),"fatores")
# Contando quantas estações vão ser utilizadas na interpolação para cada célula
for(i in 1:length(unique.factor$code)){
unique.factor$nstn[i] <- sum(str_count(unique.factor$code[i],LETTERS))
}
plot(data.frame(stations = min(unique.factor$nstn):max(unique.factor$nstn),
fatores = as.vector(table(unique.factor$nstn))),
type = "l")
factor.data <- data.frame(factor = factor,
id = rep(NA,times=length(factor)),
nstn = rep(NA,times=length(factor) ) )
for(i in as.vector(unique.factor$code[unique.factor$code != ""] )){
factor.data$id[which(factor.data$factor == i)] <- unique.factor$id[which(unique.factor$code == i)]
factor.data$nstn[which(factor.data$factor == i)] <- unique.factor$nstn[which(unique.factor$code == i)]
}
est.by.cell <- code.by.cell <- raster(wsdem)
values(est.by.cell) <- factor.data$nstn
code.by.cell <- raster(wsdem) %>%
setValues(factor.data$id) #%>%
# rasterToPolygons(dissolve = TRUE)
return(list(est.by.cell,code.by.cell,unique.factor))
} # Lendo dados observados
all.vars <- readRDS("~/Dropbox/Dissertacao/EstSP.MG_2001-2014_FINAL.rds")
# Organizando data frame por variáveis
vars <- names(select(all.vars[[1]], -date))
all.vars <- lapply(vars, function(i){
cat("\n",i, "\n")
d <- sapply(info$site, function(j){
cat(j,".")
all.vars[[j]][,i]
})
d<- cbind(all.vars[[1]][,"date"], as.data.frame(d))
names(d) <- c("date", info$site)
d
}); names(all.vars) <- vars##
## prec
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## tair
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## tair.orig
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## rh
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## rh.orig
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## ws
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## ws.orig
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## rg
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## rg.orig
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## es
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## es.orig
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## potrad
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## daytime
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## zlwd
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
## zlwd.orig
## A701 .A705 .A706 .A707 .A708 .A711 .A712 .A713 .A714 .A715 .A716 .A718 .A725 .A726 .A727 .A728 .A729 .A733 .A734 .A735 .A736 .A737 .A738 .A739 .A740 .A741 .A745 .A746 .A747 .A748 .A753 .A755 .A502 .A505 .A506 .A507 .A508 .A509 .A510 .A511 .A512 .A513 .A514 .A515 .A516 .A517 .A518 .A519 .A520 .A521 .A522 .A523 .A524 .A525 .A526 .A527 .A528 .A529 .A530 .A531 .A532 .A533 .A534 .A535 .A536 .A537 .A538 .A539 .A540 .A541 .A542 .A543 .A544 .A545 .A546 .A547 .A548 .A549 .A550 .A551 .A552 .A553 .A554 .A555 .A556 .A557 .F501 .X001 .
# Determinando áreas baixo a mesma combinação de estações
est.n.code.by.cell <- plot.raio.est(raio = 150000, cell.distance = cell.distance)## Raio seleçoado: 150000 m
## Construindo fatores
## Determinados 391 fatores
# Convertendo a poligonos
code.poly <- est.n.code.by.cell[[2]] %>% rasterToPolygons(dissolve = TRUE)
# Plot das áreas geradas
plot(est.n.code.by.cell[[1]], col = tim.colors(8), interpolate = TRUE)
plot(code.poly, add = TRUE, border = "red")
plot(wsdem_shp, add = TRUE, border = "black", lwd = 3)
text(estacoes, col = "red" ) # Levando a máscara da bacia
code.150 <- est.n.code.by.cell[[2]]
code.150[is.na(wsdem)] <- NA
# Restringindo na área da Bacia Hidrográfica
plot(code.150, col = tim.colors(length(unique(code.150))),
main = "Áreas de iguais combinações de estações\n para interpolação")
plot(code.poly, add = TRUE, border = "white")
plot(wsdem_shp, add = TRUE, border = "black", lwd = 3)
text(estacoes, col = "red" ) #Frecuência de células por combinação
freq.factor <- freq(code.150)
plot(freq.factor[!is.na(freq.factor[,1]),],
type = "h", lwd = 6) classes <- est.n.code.by.cell[[3]]setEPS()
postscript(file = "~/Dissertação/imagens/stn.code.area.150km.eps",
onefile = TRUE,pointsize = 7,
width = 6,height = 6)
plot(code.150, col = tim.colors(length(unique(code.150))),
main = "Área de igual combinação de estações\n para interpolação")
plot(code.poly, add = TRUE, border = "white")
plot(wsdem_shp, add = TRUE, border = "black", lwd = 3)
text(estacoes, col = "red" )
for(set.id in unique(code.150)){
cat(set.id,"..")
est.names <- info$site[str_detect(string = classes$code[set.id] ,
pattern = info$site)]
plot(code.150 == set.id,
main = paste("Região",set.id,"\n",paste0(est.names,collapse = "-")),
legend = FALSE,
axes = FALSE)
}## 8 ..
## 9 ..
## 34 ..
## 40 ..
## 43 ..
## 60 ..
## 63 ..
## 64 ..
## 67 ..
## 68 ..
## 69 ..
## 70 ..
## 71 ..
## 79 ..
## 83 ..
## 89 ..
## 98 ..
## 99 ..
## 116 ..
## 117 ..
## 120 ..
## 122 ..
## 123 ..
## 124 ..
## 125 ..
## 126 ..
## 131 ..
## 137 ..
## 139 ..
## 141 ..
## 143 ..
## 144 ..
## 146 ..
## 151 ..
## 154 ..
## 155 ..
## 159 ..
## 163 ..
## 165 ..
## 166 ..
## 167 ..
## 169 ..
## 171 ..
## 175 ..
## 177 ..
## 178 ..
## 179 ..
## 184 ..
## 185 ..
## 187 ..
## 188 ..
## 190 ..
## 191 ..
## 192 ..
## 194 ..
## 195 ..
## 199 ..
## 200 ..
## 201 ..
## 202 ..
## 204 ..
## 210 ..
## 215 ..
## 216 ..
## 222 ..
## 223 ..
## 224 ..
## 225 ..
## 228 ..
## 230 ..
## 233 ..
## 234 ..
## 235 ..
## 236 ..
## 237 ..
## 238 ..
## 239 ..
## 240 ..
## 242 ..
## 246 ..
## 247 ..
## 249 ..
## 250 ..
## 251 ..
## 253 ..
## 254 ..
## 255 ..
## 260 ..
## 261 ..
## 262 ..
## 264 ..
## 265 ..
## 267 ..
## 268 ..
## 269 ..
## 270 ..
## 271 ..
## 272 ..
## 273 ..
## 274 ..
## 275 ..
## 276 ..
## 278 ..
## 279 ..
## 280 ..
## 281 ..
## 282 ..
## 283 ..
## 284 ..
## 286 ..
## 287 ..
## 288 ..
## 289 ..
## 290 ..
## 291 ..
## 292 ..
## 295 ..
## 296 ..
## 297 ..
## 299 ..
## 301 ..
## 302 ..
## 303 ..
## 304 ..
## 305 ..
## 309 ..
## 314 ..
## 315 ..
## 317 ..
## 324 ..
## 328 ..
## 331 ..
## 336 ..
## 340 ..
dev.off()## png
## 2
ex.regioes <- classes[order(classes$nstn),] %>% filter(id %in% unique(code.150)) %>% head
ex.regioes## id code nstn
## 1 249 A711A726A738A739A509A530X001 7
## 2 216 A711A726A738A739A747A516A530X001 8
## 3 224 A711A726A738A739A741A747A530X001 8
## 4 225 A711A726A738A739A509A516A530X001 8
## 5 240 A711A726A738A739A747A509A530X001 8
## 6 250 A706A711A726A738A739A509A530X001 8
plot(code.150 %in% ex.regioes$id, col = c("white","red"),legend = FALSE,
main = "Áreas de iguais combinações de estações\n para interpolação")
plot(code.poly, add = TRUE, border = "blue")
plot(wsdem_shp, add = TRUE, border = "black", lwd = 3)
text(estacoes, col = "black")for(set.id in ex.regioes$id){
cat(set.id,"..")
est.names <- info$site[str_detect(string = classes$code[set.id] ,
pattern = info$site)]
nstn.at.hour <- data.frame(date = all.vars[[1]][,"date"],
tair = apply(!is.na(all.vars[["tair.orig"]][,est.names]),1,sum),
prec = apply(!is.na(all.vars[["prec"]][,est.names]),1,sum),
rg = apply(!is.na(all.vars[["rg.orig"]][,est.names]),1,sum),
es = apply(!is.na(all.vars[["es.orig"]][,est.names]),1,sum),
ws = apply(!is.na(all.vars[["ws.orig"]][,est.names]),1,sum),
zlwd = apply(!is.na(all.vars[["zlwd.orig"]][,est.names]),1,sum)) %>%
mutate(tair = ifelse(tair == 0, -1,tair),
prec = ifelse(prec == 0, -1,prec),
rg = ifelse(rg == 0, -1,rg),
es = ifelse(es == 0, -1,es),
wts = ifelse(ws == 0, -1,ws),
zlwtd = ifelse(zlwd == 0, -1,zlwd)
)
timePlot(nstn.at.hour, c("tair","prec","rg","es","wts","zlwtd"),
ref.y = 0,
plot.type = "l",lwd = 3,key.columns = 3,
main = paste("Região", set.id,"\n", paste(est.names, collapse = " ")),
date.breaks = 32,date.format = "%m\n%y",
cols = tim.colors(6) )
}## 249 ..
## 216 ..
## 224 ..
## 225 ..
## 240 ..
## 250 ..
for(set.id in ex.regioes$id){
cat(set.id,"..")
est.names <- info$site[str_detect(string = classes$code[set.id] ,
pattern = info$site)]
nstn.at.hour <- data.frame(date = all.vars[[1]][,"date"],
tair = apply(!is.na(all.vars[["tair"]][,est.names]),1,sum),
prec = apply(!is.na(all.vars[["prec"]][,est.names]),1,sum),
rg = apply(!is.na(all.vars[["rg"]][,est.names]),1,sum),
es = apply(!is.na(all.vars[["es"]][,est.names]),1,sum),
ws = apply(!is.na(all.vars[["ws"]][,est.names]),1,sum),
zlwd = apply(!is.na(all.vars[["zlwd"]][,est.names]),1,sum)) %>%
mutate(tair = ifelse(tair == 0, -1,tair),
prec = ifelse(prec == 0, -1,prec),
rg = ifelse(rg == 0, -1,rg),
es = ifelse(es == 0, -1,es),
wts = ifelse(ws == 0, -1,ws),
zlwtd = ifelse(zlwd == 0, -1,zlwd)
)
timePlot(nstn.at.hour, c("tair","prec","rg","es","wts","zlwtd"),
ref.y = 0,
plot.type = "l",lwd = 3,key.columns = 3,
main = paste("Região", set.id,"\n", paste(est.names, collapse = " ")),
date.breaks = 32,date.format = "%m\n%y",
cols = tim.colors(6) )
}## 249 ..
## 216 ..
## 224 ..
## 225 ..
## 240 ..
## 250 ..
# Determinando áreas baixo a mesma combinação de estações
est.n.code.by.cell <- plot.raio.est(raio = 100000, cell.distance = cell.distance)## Raio seleçoado: 1e+05 m
## Construindo fatores
## Determinados 224 fatores
# Convertendo a poligonos
code.poly <- est.n.code.by.cell[[2]] %>% rasterToPolygons(dissolve = TRUE)
# Plot das áreas geradas
plot(est.n.code.by.cell[[1]], col = tim.colors(8), interpolate = TRUE)
plot(code.poly, add = TRUE, border = "red")
plot(wsdem_shp, add = TRUE, border = "black", lwd = 3)
text(estacoes, col = "red" ) # Levando a máscara da bacia
code.150 <- est.n.code.by.cell[[2]]
code.150[is.na(wsdem)] <- NA
# Restringindo na área da Bacia Hidrográfica
plot(code.150, col = tim.colors(length(unique(code.150))),
main = "Áreas de iguais combinações de estações\n para interpolação")
plot(code.poly, add = TRUE, border = "white")
plot(wsdem_shp, add = TRUE, border = "black", lwd = 3)
text(estacoes, col = "red" ) #Frecuência de células por combinação
freq.factor <- freq(code.150)
plot(freq.factor[!is.na(freq.factor[,1]),],
type = "h", lwd = 6) classes <- est.n.code.by.cell[[3]]setEPS()
postscript(file = "~/Dissertação/imagens/stn.code.area.100km.eps",
onefile = TRUE,pointsize = 7,
width = 6,height = 6)
plot(code.150, col = tim.colors(length(unique(code.150))),
main = "Área de igual combinação de estações\n para interpolação")
plot(code.poly, add = TRUE, border = "white")
plot(wsdem_shp, add = TRUE, border = "black", lwd = 3)
text(estacoes, col = "red" )
for(set.id in unique(code.150)){
cat(set.id,"..")
est.names <- info$site[str_detect(string = classes$code[set.id] ,
pattern = info$site)]
plot(code.150 == set.id,
main = paste("Região",set.id,"\n",paste0(est.names,collapse = "-")),
legend = FALSE,
axes = FALSE)
}## 3 ..
## 5 ..
## 6 ..
## 26 ..
## 30 ..
## 34 ..
## 36 ..
## 39 ..
## 46 ..
## 48 ..
## 49 ..
## 54 ..
## 56 ..
## 57 ..
## 60 ..
## 62 ..
## 64 ..
## 66 ..
## 67 ..
## 69 ..
## 70 ..
## 71 ..
## 72 ..
## 73 ..
## 74 ..
## 82 ..
## 86 ..
## 89 ..
## 91 ..
## 101 ..
## 102 ..
## 103 ..
## 104 ..
## 105 ..
## 107 ..
## 109 ..
## 111 ..
## 116 ..
## 117 ..
## 118 ..
## 120 ..
## 121 ..
## 122 ..
## 123 ..
## 124 ..
## 135 ..
## 137 ..
## 144 ..
## 145 ..
## 146 ..
## 147 ..
## 148 ..
## 149 ..
## 161 ..
## 162 ..
## 163 ..
## 165 ..
## 167 ..
## 179 ..
## 181 ..
## 185 ..
## 186 ..
## 187 ..
## 188 ..
## 189 ..
## 194 ..
## 195 ..
dev.off()## png
## 2
ex.regioes <- classes[order(classes$nstn),] %>% filter(id %in% unique(code.150)) %>% head
ex.regioes## id code nstn
## 1 3 A736A747A748 3
## 2 107 A738A739A530 3
## 3 181 A739A509A530 3
## 4 26 A736A747A748A753 4
## 5 39 A736A737A747A748 4
## 6 67 A708A711A747X001 4
plot(code.150 %in% ex.regioes$id, col = c("white","red"),legend = FALSE,
main = "Áreas de iguais combinações de estações\n para interpolação")
plot(code.poly, add = TRUE, border = "blue")
plot(wsdem_shp, add = TRUE, border = "black", lwd = 3)
text(estacoes, col = "black")for(set.id in ex.regioes$id){
cat(set.id,"..")
est.names <- info$site[str_detect(string = classes$code[set.id] ,
pattern = info$site)]
nstn.at.hour <- data.frame(date = all.vars[[1]][,"date"],
tair = apply(!is.na(all.vars[["tair.orig"]][,est.names]),1,sum),
prec = apply(!is.na(all.vars[["prec"]][,est.names]),1,sum),
rg = apply(!is.na(all.vars[["rg.orig"]][,est.names]),1,sum),
es = apply(!is.na(all.vars[["es.orig"]][,est.names]),1,sum),
ws = apply(!is.na(all.vars[["ws.orig"]][,est.names]),1,sum),
zlwd = apply(!is.na(all.vars[["zlwd.orig"]][,est.names]),1,sum)) %>%
mutate(tair = ifelse(tair == 0, -1,tair),
prec = ifelse(prec == 0, -1,prec),
rg = ifelse(rg == 0, -1,rg),
es = ifelse(es == 0, -1,es),
wts = ifelse(ws == 0, -1,ws),
zlwtd = ifelse(zlwd == 0, -1,zlwd)
)
timePlot(nstn.at.hour, c("tair","prec","rg","es","wts","zlwtd"),
ref.y = 0,
plot.type = "l",lwd = 3,key.columns = 3,
main = paste("Região", set.id,"\n", paste(est.names, collapse = " ")),
date.breaks = 32,date.format = "%m\n%y",
cols = tim.colors(6) )
}## 3 ..
## 107 ..
## 181 ..
## 26 ..
## 39 ..
## 67 ..
for(set.id in ex.regioes$id){
cat(set.id,"..")
est.names <- info$site[str_detect(string = classes$code[set.id] ,
pattern = info$site)]
nstn.at.hour <- data.frame(date = all.vars[[1]][,"date"],
tair = apply(!is.na(all.vars[["tair"]][,est.names]),1,sum),
prec = apply(!is.na(all.vars[["prec"]][,est.names]),1,sum),
rg = apply(!is.na(all.vars[["rg"]][,est.names]),1,sum),
es = apply(!is.na(all.vars[["es"]][,est.names]),1,sum),
ws = apply(!is.na(all.vars[["ws"]][,est.names]),1,sum),
zlwd = apply(!is.na(all.vars[["zlwd"]][,est.names]),1,sum)) %>%
mutate(tair = ifelse(tair == 0, -1,tair),
prec = ifelse(prec == 0, -1,prec),
rg = ifelse(rg == 0, -1,rg),
es = ifelse(es == 0, -1,es),
wts = ifelse(ws == 0, -1,ws),
zlwtd = ifelse(zlwd == 0, -1,zlwd)
)
timePlot(nstn.at.hour, c("tair","prec","rg","es","wts","zlwtd"),
ref.y = 0,
plot.type = "l",lwd = 3,key.columns = 3,
main = paste("Região", set.id,"\n", paste(est.names, collapse = " ")),
date.breaks = 32,date.format = "%m\n%y",
cols = tim.colors(6) )
}## 3 ..
## 107 ..
## 181 ..
## 26 ..
## 39 ..
## 67 ..