R/mod_mapa.R

Defines functions mod_mapa_server mod_mapa_ui

#' mapa UI Function
#'
#' @description A shiny Module.
#'
#' @param id,input,output,session Internal parameters for {shiny}.
#'
#' @noRd 
#'
#' @importFrom shiny NS tagList 
mod_mapa_ui <- function(id){
  ns <- NS(id)
  
  tabItem(tabName = "mapa",
          
          # tags$style(type = "text/css", "#mapa_ui_1-mapa {height: calc(100vh - 80px) !important; overflow: hidden;}"),
          leaflet::leafletOutput(ns("mapa"), width="auto", height = "auto"),
          absolutePanel(top = 80, right = 20, height = 200, width = 100,
                        
                        actionButton(ns("atualizar_mapa"), label = NULL, icon = icon("sync"))
                        
                        )
          
  )
  
}
    
#' mapa Server Function
#'
#' @noRd 
mod_mapa_server <- function(input, output, session, origem){
  ns <- session$ns
  
  seletor_base <- reactive({
    
    p <- origem$origem()
    
    return(p)
    
  })
  
  info <- Sys.info() %>% as.data.frame()
  
  info$coluna <- rownames(info)
  
  info <- subset(info, coluna == "user")
  
  library(leaflet)
  
  # poligonos <- geobr::read_municipality(code_muni= "AC", year=2018)
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "AL", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "AM", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "AP", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "BA", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "CE", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "DF", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "ES", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "GO", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "MA", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "MG", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "MS", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "MT", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "PA", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "PB", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "PE", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "PI", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "PR", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "RJ", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "RN", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "RO", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "RR", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "RS", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "SC", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "SE", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "SP", year=2018))
  # poligonos <- rbind(poligonos, geobr::read_municipality(code_muni= "TO", year=2018))
  # 
  # saveRDS(poligonos, file = "poligonos")
  
  # poligonos <- readRDS(paste0(caminho_poligonos, "\\poligonos"))
  
  poligonos <- Dados::PoligonosMunicipios
  
  atualiza_mapa <- function(){
    
    output$mapa <- leaflet::renderLeaflet({
      
      if(seletor_base() == TRUE){
        
        if(file.exists(paste0("caged_filtrado2_", as.character(info$.[1])))){
          
          municipios_selecionados <- readRDS(file = paste0("caged_filtrado2_", as.character(info$.[1])))
          municipios_selecionados <- municipios_selecionados$Município
          
          poligonos <- poligonos %>% subset(substr(code_muni, 1, 6)%in%municipios_selecionados)
          
          poligonos$code_muni <- as.numeric(substr(poligonos$code_muni, 1, 6))
          
          dados_municipio <- readRDS(file = paste0("caged_filtrado2_", as.character(info$.[1])))
          dados_municipio <- dplyr::select(dados_municipio, Município, media_salario_municipio, n_amostras_municipio) %>% unique()
          names(dados_municipio)[1] <- "code_muni"
          
          dados_municipio <- dplyr::right_join(dados_municipio, poligonos, by = "code_muni")
          
          poligonos$media_salario_municipio <- dados_municipio$media_salario_municipio
          poligonos$n_amostras_municipio <- dados_municipio$n_amostras_municipio
          
          mapa <- poligonos %>%
            mutate(remun_media_mun = stringr::str_c("<font style='font-size:16px;'><b>", name_muni, "</b></font>", "<br>",
                                                    "<font style='font-size:14px;'>Código Município: ", code_muni, "</font><br>",
                                                    "<font style='font-size:14px;'>Salário Médio: ", format(round(media_salario_municipio, 2), big.mark = ".", decimal.mark = ","), "</font><br>",
                                                    "<font style='font-size:14px;'>Amostras: ", n_amostras_municipio, "</font><br>") %>%
                     purrr::map(htmltools::HTML)) %>% 
            leaflet::leaflet()
          
          mapa <- mapa %>%
            leaflet::addTiles() %>%
            leaflet::addProviderTiles(providers$CartoDB.Positron) %>%
            leaflet.extras::addFullscreenControl()
          # leaflet.extras::addDrawToolbar() %>%
          # leaflet.extras::addResetMapButton() %>%
          # leaflet.extras::addStyleEditor()
          
          mapa <- mapa %>%
            leaflet::addPolygons(
              label = ~remun_media_mun,
              # fillColor = ~pal(medsal),
              group = "Média Salarial",
              color = "#00cc00",
              weight = 1,
              smoothFactor = 0.5,
              opacity = 1,
              fillOpacity = 0.8,
              highlightOptions = highlightOptions(color = "white",
                                                  weight = 2,
                                                  bringToFront = TRUE)
            )
          
          mapa
          
        }else{
          
          mapa <- leaflet::leaflet()
          
          mapa <- mapa %>%
            leaflet::addTiles() %>%
            leaflet::addProviderTiles(providers$CartoDB.Positron) %>%
            leaflet.extras::addFullscreenControl()
          
          mapa
          
        }
        
      }else{
        
        if(file.exists(paste0("rais_filtrado2_", as.character(info$.[1])))){
          
          municipios_selecionados <- readRDS(file = paste0("rais_filtrado2_", as.character(info$.[1])))
          municipios_selecionados <- municipios_selecionados$Município
          
          poligonos <- poligonos %>% subset(substr(code_muni, 1, 6)%in%municipios_selecionados)
          
          poligonos$code_muni <- as.numeric(substr(poligonos$code_muni, 1, 6))
          
          dados_municipio <- readRDS(file = paste0("rais_filtrado2_", as.character(info$.[1])))
          dados_municipio <- dplyr::select(dados_municipio, Município, media_salario_municipio, n_amostras_municipio) %>% unique()
          names(dados_municipio)[1] <- "code_muni"
          
          dados_municipio <- dplyr::right_join(dados_municipio, poligonos, by = "code_muni")
          
          poligonos$media_salario_municipio <- dados_municipio$media_salario_municipio
          poligonos$n_amostras_municipio <- dados_municipio$n_amostras_municipio
          
          mapa <- poligonos %>%
            mutate(remun_media_mun = stringr::str_c("<font style='font-size:16px;'><b>", name_muni, "</b></font>", "<br>",
                                                    "<font style='font-size:14px;'>Código Município: ", code_muni, "</font><br>",
                                                    "<font style='font-size:14px;'>Salário Médio: ", format(round(media_salario_municipio, 2), big.mark = ".", decimal.mark = ","), "</font><br>",
                                                    "<font style='font-size:14px;'>Amostras: ", n_amostras_municipio, "</font><br>") %>%
                     purrr::map(htmltools::HTML)) %>% 
            leaflet::leaflet()
          
          mapa <- mapa %>%
            leaflet::addTiles() %>%
            leaflet::addProviderTiles(providers$CartoDB.Positron) %>%
            leaflet.extras::addFullscreenControl()
          # leaflet.extras::addDrawToolbar() %>%
          # leaflet.extras::addResetMapButton() %>%
          # leaflet.extras::addStyleEditor()
          
          mapa <- mapa %>%
            leaflet::addPolygons(
              label = ~remun_media_mun,
              # fillColor = ~pal(medsal),
              group = "Média Salarial",
              color = "#00cc00",
              weight = 1,
              smoothFactor = 0.5,
              opacity = 1,
              fillOpacity = 0.8,
              highlightOptions = highlightOptions(color = "white",
                                                  weight = 2,
                                                  bringToFront = TRUE)
            )
          
          mapa
          
        }else{
          
          mapa <- leaflet::leaflet()
          
          mapa <- mapa %>%
            leaflet::addTiles() %>%
            leaflet::addProviderTiles(providers$CartoDB.Positron) %>%
            leaflet.extras::addFullscreenControl()
          
          mapa
          
        }
        
      }
      
    })
    
    
  }
  
 observe({
   
   atualiza_mapa()
   
 })
 
 
 
 observeEvent(input$atualizar_mapa, {
   
   atualiza_mapa()
   
 })
  
    
  # poligonos <- readRDS("poligonos")
  # 
  # municipios_selecionados <- c("350010", "350020")
  # 
  # poligonos <- poligonos %>% subset(substr(code_muni, 1, 6)%in%municipios_selecionados)
  # 
  # # bins <- c(0,
  # #           mean(BRASIL3NA$medsal[!is.na(BRASIL3NA$medsal)]),
  # #           max(BRASIL3NA$medsal[!is.na(BRASIL3NA$medsal)]))
  # # 
  # # pal <- leaflet::colorBin("YlOrRd", domain = BRASIL3NA$medsal, bins = bins)
  # 
  # mapa <- poligonos %>% 
  #   leaflet::leaflet()
  # 
  # mapa <- mapa %>% 
  #   leaflet::addTiles()
  # 
  # mapa <- mapa %>% 
  #   leaflet::addPolygons(
  #     label = ~name_muni,
  #     # fillColor = ~pal(medsal),
  #     group = "Média Salarial",
  #     color = "#444444",
  #     weight = 0,
  #     smoothFactor = 0.5,
  #     opacity = 1.0,
  #     fillOpacity = 1.0,
  #     highlightOptions = highlightOptions(color = "white",
  #                                         weight = 2,
  #                                         bringToFront = TRUE)
  #   )
  # 
  # mapa
  # 
  # mapa <- mapa %>% 
  #   leaflet::addLegend(pal = pal,
  #                      values = ~medsal,
  #                      opacity = 0.7,
  #                      title = htmltools::HTML("Título"),
  #                      position = "bottomright",
  #                      group = "Média Salarial")
  # 
  # mapa <- mapa %>% 
  #   leaflet::addLayersControl(
  #     overlayGroups = c("Média Salarial"),
  #     options = layersControlOptions(collapsed = TRUE)
  #   )
  # 
  # mapa <- mapa %>% 
  #   leaflet::hideGroup(c("Média Salarial"))
  # 
  # mapa
 
}
    
## To be copied in the UI
# mod_mapa_ui("mapa_ui_1")
    
## To be copied in the server
# callModule(mod_mapa_server, "mapa_ui_1")
 
leandro-vento/projeto documentation built on April 10, 2021, 6:43 p.m.