Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Área de atuação da Sudene e Semiárido #307

Open
diegomsg opened this issue Mar 8, 2023 · 13 comments
Open

Área de atuação da Sudene e Semiárido #307

diegomsg opened this issue Mar 8, 2023 · 13 comments
Labels
new Data request Request to include data sets in the package

Comments

@diegomsg
Copy link

diegomsg commented Mar 8, 2023

Como poderia ajudar a inserir os dados disponíveis em Sudene/Sigmapas no pacote?
Não tenho muita experiência com geoprocessamento em R, muito menos em Python, mas alguma experiência em ferramentas SIG.

@rafapereirabr
Copy link
Member

Oi Diego.

Aqui tem um passo-a-passo sobre como contribuir com o geobr.

O dado do poligono do semiário ja está disponivel no geobr com a função read_semiarid().

O site que voce apontou só tem o de "Área de atuação da Sudene" para o ano de 2022. Você sabe onde encontrar essa informação para outros anos?

ps. Podemos utilizar a lista de municípios indicados na regulamentação da Sudene, mas o ideal seria usar os polígonos da malha municipal do IBGE, que são as fronteiras oficiais dos municipios.

@diegomsg
Copy link
Author

diegomsg commented Mar 8, 2023

A definição anterior, de 2007, não é georreferenciada pelo órgão, e seguem o disposto na lei complementar 125, de 03/01/2007. O resumo das cidades fora da região NE que integram a área de atuação são listados em página antiga da Sudene, sem utilizar geocódigo IBGE ou outra informação para cruzar com database IBGE.
Não encontrei essa informação em nenhuma database IBGE publicada. Como a premissa é de dados publicados por instituição pública, ficaria pendente.

@rafapereirabr
Copy link
Member

Você poderia gerar um data.frame com os nomes e códigos do IBGE para todos esses municipios da lei complementar 125, de 03/01/2007 ?

name_muni code_muni

@diegomsg
Copy link
Author

dataframe a partir da base geobr::read_municipality

# Área de atuação Sudene, ano 2007
# Script para definir data.frame que espelhe delimitação
# conforme LC 125, de 03/01/2007

library("geobr")
#> Loading required namespace: sf
library("tidyverse")

municipios <- read_municipality(year = 2020, showProgress = FALSE)
#> Using year 2020
nordeste <- municipios %>%
  select("code_muni", "name_muni", "abbrev_state") %>%
  mutate("regiao" = trunc(code_muni / 1e6)) %>%
  filter(regiao == 2)

mg_es <- municipios %>% 
  select("code_muni", "name_muni", "abbrev_state") %>%
  filter(code_muni %in% c(3100906, 3101003, 3101706, 3102704, 3102852, 3103405, 3104452, 3104502, 3104700, 3105202, 3106507, 3106606, 3106655, 3107307, 3108255, 3108503, 3108602, 3109402, 3110806, 3111150, 3112307, 3112703, 3113008, 3113503, 3113701, 3115458, 3115474, 3116100, 3116159, 3116506, 3117009, 3117836, 3118809, 3119500, 3120102, 3120151, 3120300, 3120870, 3121001, 3121605, 3122355, 3122454, 3123809, 3124302, 3125408, 3125507, 3125606, 3126208, 3126505, 3126604, 3126703, 3126752, 3126802, 3127057, 3127073, 3127339, 3127354, 3127800, 3128253, 3129608, 3129657, 3130051, 3130655, 3132008, 3132107, 3132305, 3132503, 3132701, 3133303, 3134004, 3134707, 3135050, 3135100, 3135209, 3135357, 3135456, 3135605, 3135803, 3136009, 3136504, 3136520, 3136579, 3136801, 3136959, 3137007, 3137304, 3138104, 3138351, 3138658, 3138682, 3138906, 3139201, 3139250, 3139300, 3140555, 3140852, 3141009, 3141405, 3141801, 3142007, 3142254, 3142700, 3142908, 3143153, 3143302, 3143450, 3144300, 3144656, 3145059, 3145307, 3145356, 3145372, 3145455, 3146206, 3146255, 3146305, 3146552, 3146750, 3147956, 3148509, 3148707, 3149150, 3150000, 3150570, 3151206, 3152131, 3152170, 3152204, 3152402, 3154457, 3154507, 3155108, 3155603, 3156007, 3156502, 3156601, 3157005, 3157104, 3157377, 3157609, 3157658, 3158102, 3160306, 3160454, 3161106, 3162252, 3162401, 3162450, 3162658, 3162708, 3164209, 3165552, 3165909, 3166709, 3166956, 3167103, 3168002, 3168606, 3169703, 3170008, 3170305, 3170529, 3170651, 3170800, 3170909, 3171030, 3171071, 3171600, 3200136, 3200169, 3200359, 3200805, 3200904, 3201001, 3201506, 3201605, 3202108, 3202256, 3203056, 3203205, 3203304, 3203353, 3203502, 3203601, 3203908, 3204005, 3204054, 3204104, 3204252, 3204351, 3204658, 3204708, 3204906, 3205010, 3205150, 3205176))

sudene <- bind_rows(nordeste, mg_es) %>%
  arrange(regiao, abbrev_state, name_muni)

Created on 2023-03-10 with reprex v2.0.2

Essa informação é suficiente?
Quando tiver mais um tempinho faço os scripts:

  • Sudene 2022
  • Semiárido 2021.

@rafapereirabr
Copy link
Member

ótimo. Isso já ajuda muito, @diegomsg. A gente precisa pensar na ideia da função.

Faz sentido ter três funções separadas?

  • read_sudam( year )
  • read_sudeco()
  • read_sudene()

Ou uma única função em que a pessoa passa a região de interesse. Algo como:

  • read_development_region(region = c('Nordeste', 'Centro-Oeste', 'Amazonia'))

Qualquer que seja a escolha, a função deve ter um parâmetro year para indicar o ano de referência dos municipios que estavam sob a superintendencia.

Em principio, eu preferiria uma função só, mas isso pode complicar um pouco as coisas porque as leis que definem os muninicios de cada superintendencia podem ter sido publicadas em anos diferentes. Se usarmos funcoes separadas, cada função pode ser seu próprio default value para o parametro year.

@diegomsg
Copy link
Author

diegomsg commented Mar 13, 2023

Acho melhor a abordagem de 1 só função, especialmente quando o interesse é nas regiões de desenvolvimento incentivado, e as superintendências definem subconjuntos destas.

read_development_region(region = c('NE', 'CO', 'AM', year = c('current', 2022, 2007, ...) )),

Sendo que current = tapply(df$development_regions, df$year, max)

Seria possível? Acha interessante a opção current?

@rafapereirabr
Copy link
Member

Eu acho que gosto da ideia do current, no sentido de que ela usaria a lei mais recente que define a lista de municipios. Mas minha preocupação é como fazer o parâmetro do year funcionar com o passar dos anos por conta de eventuais serapações de municipios.

Pensando aqui o comportamento da função:

Caso 1

read_development_region(region = "NE", year = 2022)

  • deveria retornar um data.frame sf com os polígodos dos municípios de 2022, mas mantendo apenas o municipios listados na lei complementar de 2022 que definiu a area de atuação da Sudene.

Caso 2

read_development_region(region = "NE", year = 2007)

  • deveria retornar um data.frame sf com os polígodos dos municípios de 2007, mas mantendo apenas o municipios listados na lei complementar 125, de 03/01/2007.

Caso 3

read_development_region(region = "NE", year = 2015)

  • Nesse caso aqui, acho q deveria dar erro, e uma mensagem informativa. Tipo: Error: Invalid Value to argument 'year'. When "region = "NE", the parameter 'year' must be one of the following: 2007, 2022

Sugiro isso porque pode ter havido algum desmembramento de municipios entre 2007 e 2015, e isso tornaria a funcao muito mais complicada.

O que acha?

@diegomsg
Copy link
Author

Não entendi a necessidade de erro, já que há disponibilidade de dados das municipalidades nos respectivos anos.

O join para as informações sf de municípios inseridos na lei da região de desenvolvimento incentivado no ano year não se dá com o read_municipality() no respectivo ano?

Assim o código anteriormente mencionado fica com o ano.

# Área de atuação Sudene, ano 2007
# conforme LC 125, de 03/01/2007

library("geobr")
library("tidyverse")

year = 2007
municipios <- read_municipality(year = year, showProgress = FALSE)
#> Using year 2007
nordeste <- municipios %>%
  select("code_muni", "name_muni", "abbrev_state") %>%
  mutate("regiao" = trunc(code_muni / 1e6)) %>%
  filter(regiao == 2)

mg_es <- municipios %>% 
  select("code_muni", "name_muni", "abbrev_state") %>%
  filter(code_muni %in% c(3100906, 3101003, 3101706, 3102704, 3102852, 3103405, 3104452, 3104502, 3104700, 3105202, 3106507, 3106606, 3106655, 3107307, 3108255, 3108503, 3108602, 3109402, 3110806, 3111150, 3112307, 3112703, 3113008, 3113503, 3113701, 3115458, 3115474, 3116100, 3116159, 3116506, 3117009, 3117836, 3118809, 3119500, 3120102, 3120151, 3120300, 3120870, 3121001, 3121605, 3122355, 3122454, 3123809, 3124302, 3125408, 3125507, 3125606, 3126208, 3126505, 3126604, 3126703, 3126752, 3126802, 3127057, 3127073, 3127339, 3127354, 3127800, 3128253, 3129608, 3129657, 3130051, 3130655, 3132008, 3132107, 3132305, 3132503, 3132701, 3133303, 3134004, 3134707, 3135050, 3135100, 3135209, 3135357, 3135456, 3135605, 3135803, 3136009, 3136504, 3136520, 3136579, 3136801, 3136959, 3137007, 3137304, 3138104, 3138351, 3138658, 3138682, 3138906, 3139201, 3139250, 3139300, 3140555, 3140852, 3141009, 3141405, 3141801, 3142007, 3142254, 3142700, 3142908, 3143153, 3143302, 3143450, 3144300, 3144656, 3145059, 3145307, 3145356, 3145372, 3145455, 3146206, 3146255, 3146305, 3146552, 3146750, 3147956, 3148509, 3148707, 3149150, 3150000, 3150570, 3151206, 3152131, 3152170, 3152204, 3152402, 3154457, 3154507, 3155108, 3155603, 3156007, 3156502, 3156601, 3157005, 3157104, 3157377, 3157609, 3157658, 3158102, 3160306, 3160454, 3161106, 3162252, 3162401, 3162450, 3162658, 3162708, 3164209, 3165552, 3165909, 3166709, 3166956, 3167103, 3168002, 3168606, 3169703, 3170008, 3170305, 3170529, 3170651, 3170800, 3170909, 3171030, 3171071, 3171600, 3200136, 3200169, 3200359, 3200805, 3200904, 3201001, 3201506, 3201605, 3202108, 3202256, 3203056, 3203205, 3203304, 3203353, 3203502, 3203601, 3203908, 3204005, 3204054, 3204104, 3204252, 3204351, 3204658, 3204708, 3204906, 3205010, 3205150, 3205176))

sudene <- bind_rows(nordeste, mg_es) %>%
  arrange(regiao, abbrev_state, name_muni)

Como o geobr tem disponíveis sf`` para os anos 1872, 1900, 1911, 1920, 1933, 1940, 1950, 1960, 1970, 1980, 1991, 2000, 2001, 2005, 2007, 2010, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, quando a região de desenvolvimento tiver ano definido posterior ao current, definido por ifelse( development_region$year > mucipality$current, mucipality$current, development_region$year )`

Sendo mucipality$current, assim definido:

library(geobr)
library(dplyr)
library(stringr)
geobr_muni <- geobr::list_geobr()
years_available <- geobr_muni$years[8]
current <- str_trim(years_available) %>% 
    str_extract_all("\\b\\d*\\b") %>%
    unlist() %>%
    as.integer() %>%
    max()

@rafapereirabr
Copy link
Member

rafapereirabr commented Mar 14, 2023

Estou com um pouco de dificuldade de entender como a implentação do year = "current" iria funcionar. Isso aqui foi a 1a ideia que me veio a cabeça de como essa funcão funcionaria. Nesse exemplo aqui funcionando apenas para SUDENE, e precisariamos atualizar /checar a lista de codigos de municipios de 2007 e 2020. Por favor, fique a vontade para sugerir melhorias no código / funcionamento da função.

library(geobr)

read_development_region <- function(region, year = 2020, simplified = TRUE, showProgress = TRUE){
  
  # check region input
  checkmate::assert_true(region %in% c('NE'))
  

  ### SUDENE --------------------------------------------------------
  if(region == 'NE') {  
    
    # check year input
    checkmate::assert_true(year %in% c(2007, 2020)) 
  
    # Municipalities under Sudene in 2007
    sudene_2007 <- c(3100906, 3101003, 3101706, 3102704, 3102852, 3103405, 
                     3104452, 3104502, 3104700, 3105202, 3106507, 3106606, 
                     3106655, 3107307, 3108255, 3108503, 3108602, 3109402, 
                     3110806, 3111150, 3112307, 3112703, 3113008, 3113503, 
                     3113701, 3115458, 3115474, 3116100, 3116159, 3116506, 
                     3117009, 3117836, 3118809, 3119500, 3120102, 3120151, 
                     3120300, 3120870, 3121001, 3121605, 3122355, 3122454, 
                     3123809, 3124302, 3125408, 3125507, 3125606, 3126208, 
                     3126505, 3126604, 3126703, 3126752, 3126802, 3127057, 
                     3127073, 3127339, 3127354, 3127800, 3128253, 3129608, 
                     3129657, 3130051, 3130655, 3132008, 3132107, 3132305, 
                     3132503, 3132701, 3133303, 3134004, 3134707, 3135050, 
                     3135100, 3135209, 3135357, 3135456, 3135605, 3135803, 
                     3136009, 3136504, 3136520, 3136579, 3136801, 3136959, 
                     3137007, 3137304, 3138104, 3138351, 3138658, 3138682, 
                     3138906, 3139201, 3139250, 3139300, 3140555, 3140852, 
                     3141009, 3141405, 3141801, 3142007, 3142254, 3142700, 
                     3142908, 3143153, 3143302, 3143450, 3144300, 3144656, 
                     3145059, 3145307, 3145356, 3145372, 3145455, 3146206, 
                     3146255, 3146305, 3146552, 3146750, 3147956, 3148509, 
                     3148707, 3149150, 3150000, 3150570, 3151206, 3152131, 
                     3152170, 3152204, 3152402, 3154457, 3154507, 3155108, 
                     3155603, 3156007, 3156502, 3156601, 3157005, 3157104, 
                     3157377, 3157609, 3157658, 3158102, 3160306, 3160454, 
                     3161106, 3162252, 3162401, 3162450, 3162658, 3162708, 
                     3164209, 3165552, 3165909, 3166709, 3166956, 3167103, 
                     3168002, 3168606, 3169703, 3170008, 3170305, 3170529, 
                     3170651, 3170800, 3170909, 3171030, 3171071, 3171600, 
                     3200136, 3200169, 3200359, 3200805, 3200904, 3201001, 
                     3201506, 3201605, 3202108, 3202256, 3203056, 3203205, 
                     3203304, 3203353, 3203502, 3203601, 3203908, 3204005, 
                     3204054, 3204104, 3204252, 3204351, 3204658, 3204708, 
                     3204906, 3205010, 3205150, 3205176)
    # Municipalities under Sudene in 2020
    sudene_2020 <- c(3100906, 3101003, 3101706, 3102704, 3102852, 3103405, 
                     3104452, 3104502, 3104700, 3105202, 3106507, 3106606) 
                     
    # download data
    munis_br <- read_municipality(code_muni = 'all',
                                  year = year, 
                                  simplified = simplified,
                                  showProgress = showProgress
                                  )
  
    # filter data
    temp_ne1 <- subset(munis_br, substring(munis_br$code_state, 1, 1) == "2")
    
    if (year == 2007) { temp_ne2 <- subset(munis_br, code_muni %in% sudene_2007) }
    if (year == 2020) { temp_ne2 <- subset(munis_br, code_muni %in% sudene_2020) }
    
    temp_sf <- rbind(temp_ne1, temp_ne1)
    return(sudene_2007)
    }
    
    ### SUDEAN --------------------------------------------------------
    # ....
    
}

    
test <- read_development_region(region = 'NE', year = 2007)
plot(temp_ne1['code_state'])

@diegomsg
Copy link
Author

Pensei no current como solução para a última alteração da área de abrangência da Sudene, em 2021. A malha digital do IBGE em read_municipality vai até 2020.

  • Alterei o código considerando incluindo essa condição;
  • Incluí e revisei a lista de Sudene_2021 fora da região NE
  • Incluí ainda a base da Sudene_1998, entretanto não há sf de municípios nesse ano, e considerar o ano anterior (1991) ou posterior (2000) traria equívocos, como possíveis municípios listados ainda inexistentes em base anterior, ou modificados em base posterior;
  • Incluí a base Sudam_2007, conforme LC 124 de 2007, que considera toda a região norte + MT como área de abrangência, ainda possíveis desmembramentos de municípios ou estados como já inseridos.

Dê uma olhada no código a seguir, e fique à vontade para alterá-lo. Tive dificuldade com strings e subsets sem precisar de pacotes adicionais.

library(geobr)

read_development_region <- function(region, year = 'current', simplified = TRUE, showProgress = TRUE){
  
  # check region input
  checkmate::assert_true(region %in% c('NE', 'N', 'all'))
  
  ### SUDENE --------------------------------------------------------
  if(region == 'NE') {  
    
    # years available in database
    years <- c(2007, 2021)
    
    # check year input
    checkmate::assert_true(year %in% c(years, 'current'))
    
    # assign latest year available if current is chosen
    if(year == 'current') year <- max(years)
    
    # Municipalities under Sudene in 1998
    sudene_1998 <- c(3101706, 3103405, 3105202, 3106507, 3102704, 3112307, 
                     3113008, 3113503, 3116100, 3117009, 3119500, 3120102, 
                     3121001, 3121605, 3122454, 3125408, 3125606, 3126505, 
                     3132503, 3133303, 3134004, 3134707, 3135803, 3136009, 
                     3136504, 3139201, 3140555, 3141405, 3141801, 3143450, 
                     3145307, 3146305, 3146750, 3148707, 3155108, 3156007, 
                     3156601, 3157104, 3158102, 3160306, 3165909, 3125507, 
                     3167103, 3169703, 3171600, 3200805, 3201506, 3203205, 
                     3203353, 3204351, 3204658, 3204005, 3205010, 3200359, 
                     3200136, 3204708, 3205176, 3203056, 3203304, 3200904, 
                     3205150, 3200169, 3203908, 3204906, 3201605, 3201001, 
                     3204104, 3202108, 3204252, 3203502, 3203601, 3204054)
    
    # Municipalities under Sudene in 2007
    sudene_2007 <- c(3100906, 3101003, 3101706, 3102704, 3102852, 3103405, 
                     3104452, 3104502, 3104700, 3105202, 3106507, 3106606, 
                     3106655, 3107307, 3108255, 3108503, 3108602, 3109402, 
                     3110806, 3111150, 3112307, 3112703, 3113008, 3113503, 
                     3113701, 3115458, 3115474, 3116100, 3116159, 3116506, 
                     3117009, 3117836, 3118809, 3119500, 3120102, 3120151, 
                     3120300, 3120870, 3121001, 3121605, 3122355, 3122454, 
                     3123809, 3124302, 3125408, 3125507, 3125606, 3126208, 
                     3126505, 3126604, 3126703, 3126752, 3126802, 3127057, 
                     3127073, 3127339, 3127354, 3127800, 3128253, 3129608, 
                     3129657, 3130051, 3130655, 3132008, 3132107, 3132305, 
                     3132503, 3132701, 3133303, 3134004, 3134707, 3135050, 
                     3135100, 3135209, 3135357, 3135456, 3135605, 3135803, 
                     3136009, 3136504, 3136520, 3136579, 3136801, 3136959, 
                     3137007, 3137304, 3138104, 3138351, 3138658, 3138682, 
                     3138906, 3139201, 3139250, 3139300, 3140555, 3140852, 
                     3141009, 3141405, 3141801, 3142007, 3142254, 3142700, 
                     3142908, 3143153, 3143302, 3143450, 3144300, 3144656, 
                     3145059, 3145307, 3145356, 3145372, 3145455, 3146206, 
                     3146255, 3146305, 3146552, 3146750, 3147956, 3148509, 
                     3148707, 3149150, 3150000, 3150570, 3151206, 3152131, 
                     3152170, 3152204, 3152402, 3154457, 3154507, 3155108, 
                     3155603, 3156007, 3156502, 3156601, 3157005, 3157104, 
                     3157377, 3157609, 3157658, 3158102, 3160306, 3160454, 
                     3161106, 3162252, 3162401, 3162450, 3162658, 3162708, 
                     3164209, 3165552, 3165909, 3166709, 3166956, 3167103, 
                     3168002, 3168606, 3169703, 3170008, 3170305, 3170529, 
                     3170651, 3170800, 3170909, 3171030, 3171071, 3171600, 
                     3200136, 3200169, 3200359, 3200805, 3200904, 3201001, 
                     3201506, 3201605, 3202108, 3202256, 3203056, 3203205, 
                     3203304, 3203353, 3203502, 3203601, 3203908, 3204005, 
                     3204054, 3204104, 3204252, 3204351, 3204658, 3204708, 
                     3204906, 3205010, 3205150, 3205176)
    
    # Municipalities under Sudene in 2021
    sudene_2021 <- c(3101003, 3144656, 3144300, 3166709, 3203502, 3204054, 
                     3136959, 3108255, 3116159, 3117836, 3126208, 3132107, 
                     3135209, 3139300, 3142254, 3142700, 3149150, 3162450, 
                     3143450, 3162708, 3105202, 3122355, 3122454, 3136504, 
                     3140555, 3148707, 3157104, 3134707, 3146750, 3158102, 
                     3160306, 3106606, 3157658, 3170305, 3124302, 3127339, 
                     3140852, 3156601, 3113701, 3101706, 3201605, 3204104, 
                     3139250, 3100500, 3108800, 3127503, 3127701, 3128006, 
                     3144359, 3149952, 3157500, 3161601, 3167707, 3171808, 
                     3100609, 3102852, 3104452, 3112307, 3126752, 3132701, 
                     3136553, 3137007, 3139201, 3158201, 3163003, 3164100, 
                     3164506, 3165552, 3100906, 3120151, 3127057, 3136009, 
                     3138906, 3143153, 3145356, 3102704, 3106655, 3120870, 
                     3157377, 3101102, 3118403, 3134103, 3144003, 3154309, 
                     3159506, 3200805, 3202702, 3202900, 3135803, 3101805, 
                     3112653, 3123700, 3125804, 3133204, 3169505, 3102209, 
                     3130903, 3168408, 3156809, 3167103, 3141405, 3141801, 
                     3103405, 3113008, 3116100, 3119500, 3126505, 3133303, 
                     3134004, 3135456, 3145307, 3146305, 3152170, 3171600, 
                     3132503, 3104502, 3154457, 3164209, 3170479, 3170529, 
                     3104700, 3126802, 3131802, 3141504, 3144672, 3144904, 
                     3146206, 3150000, 3161056, 3163300, 3168606, 3200169, 
                     3200904, 3202108, 3203908, 3205150, 3121605, 3138104, 
                     3106507, 3120300, 3127800, 3136520, 3138351, 3169703, 
                     3125606, 3155108, 3168002, 3107307, 3108503, 3113503, 
                     3116506, 3118809, 3120102, 3123809, 3126604, 3127354, 
                     3128253, 3132008, 3136801, 3143302, 3145455, 3162252, 
                     3165909, 3108206, 3122470, 3144375, 3157609, 3126703, 
                     3109402, 3108602, 3111150, 3130051, 3135357, 3138682, 
                     3142007, 3147956, 3161106, 3162401, 3162658, 3170008, 
                     3123106, 3129608, 3137304, 3151206, 3152131, 3170800, 
                     3110806, 3126901, 3135076, 3112059, 3148608, 3162807, 
                     3171071, 3127305, 3112703, 3135100, 3170909, 3115458, 
                     3132305, 3130556, 3150158, 3157252, 3159357, 3160959, 
                     3164472, 3170057, 3148509, 3203601, 3113800, 3166105, 
                     3115474, 3141009, 3142908, 3146552, 3152204, 3115706, 
                     3122108, 3139607, 3161650, 3162575, 3203304, 3150570, 
                     3135605, 3116803, 3126950, 3140605, 3148400, 3156007, 
                     3163508, 3117009, 3156502, 3157005, 3168051, 3121001, 
                     3120839, 3127370, 3119203, 3140100, 3144201, 3165503, 
                     3171907, 3125408, 3125507, 3166501, 3136579, 3200359, 
                     3160207, 3122207, 3135050, 3160454, 3154507, 3152402, 
                     3171501, 3127073, 3145372, 3146255, 3155603, 3129657, 
                     3138658, 3130655, 3170651, 3204005, 3171030, 3145059, 
                     3166956, 3200136, 3202256, 3204658, 3204708, 3200607, 
                     3203205, 3201506, 3201001, 3204252, 3204906, 3203353, 
                     3204351, 3205176, 3203056, 3205010) 
    
    # if current year not available in municipality data, use the latest available
    muni_years <- list_geobr()[which(list_geobr()$'function' == '`read_municipality`'), 'years']
    years_list <- strsplit(muni_years, ",")
    muni_current_year <- max( as.numeric( unlist( years_list ) ) )
    
    # download data
    munis_br <- read_municipality(code_muni = 'all',
                                  year = if (year > muni_current_year) muni_current_year else year, 
                                  simplified = simplified,
                                  showProgress = showProgress
    )
    
    # filter data
    temp_ne1 <- subset(munis_br, substring(munis_br$code_state, 1, 1) == "2")
    
    if (year == 2007) { temp_ne2 <- subset(munis_br, code_muni %in% sudene_2007) }
    if (year == 2021) { temp_ne2 <- subset(munis_br, code_muni %in% sudene_2021) }
    
    temp_sf <- rbind(temp_ne1, temp_ne2)
    return(temp_sf)
  }
  
  ### SUDAM --------------------------------------------------------
  if(region == 'N') {  
    
    # years available in database
    years <- c(2007)
    
    # check year input
    checkmate::assert_true(year %in% c(years, 'current'))
    
    # assign latest year available if current is chosen
    if(year == 'current') year <- max(years)
    
    # if current year not available in municipality data, use the latest available
    muni_years <- list_geobr()[which(list_geobr()$'function' == '`read_municipality`'), 'years']
    years_list <- strsplit(muni_years, ",")
    muni_current_year <- max( as.numeric( unlist( years_list ) ) )
    
    # download data
    munis_br <- read_municipality(code_muni = 'all',
                                  year = if (year > muni_current_year) muni_current_year else year, 
                                  simplified = simplified,
                                  showProgress = showProgress
    )
    
    # Municipalities under Sudam in 2007
    sudam_2007 <- subset(munis_br, substring(munis_br$code_state, 1, 2) == "51" |
                           substring(munis_br$code_state, 1, 1) == "1" )
    
    # Assign data
    if (year == 2007) { N <- sudam_2007 }
    
    return(N)
  }
  
}


sudam <- read_development_region(region = 'N', year = 'current')
sudene <- read_development_region(region = 'NE', year = 'current')
plot(sudam['code_state'])
plot(sudene['code_state'])

@diegomsg
Copy link
Author

Acabei deixando na verificação checkmate::assert_true(region %in% c('NE', 'N', 'all')) mas não implementei, pois não sei qual a melhor abordagem, rodar a função recorrentemente (faz o download de munis_br 2 vezes?) ou definir subsets inteiros em novo if?

@rafapereirabr
Copy link
Member

Oi @diegomsg . Obrigado pelos ajustes na funcao e atualizacao na lista de municipios! Ainda preciso checar o funcionamento da funcao com mais calma, mas atpe agora esse é o trecho que mais me 'preocupa'.

    # if current year not available in municipality data, use the latest available
    muni_years <- list_geobr()[which(list_geobr()$'function' == '`read_municipality`'), 'years']
    years_list <- strsplit(muni_years, ",")
    muni_current_year <- max( as.numeric( unlist( years_list ) ) )

Eu entendo a motivação de pegar a malha de municipios mais recente com current. No entanto, minha preocupação é se houver desmembramento de municipio. Exemplo, vamos selecionar o municipio 3101003 que faz parte da Sudene do decreto de 20221. Agora suponha q esse município tenha se desmembrado em dois : 1234567 e o municipio original mantem o codigo 3101003. Com esse codigo acima que voce sugere, os dados baixados pelo geobr não irá incluir o novo municipio 1234567, e vai deixar um buraco no mapa.

A alternativa que eu tinha pensado era essa aqui. Nesse caso, quando o usuario escolhe year = current, o geobr baixa a lista de municipios da legislação vigente considerando a malha de municipios no ano da publicação da legislação.

    # assign latest year available if current is chosen
    if (year == 'current') { year <- max(years) }
    
    # download data
    munis_br <- read_municipality(code_muni = 'all',
                                  year = year, 
                                  simplified = simplified,
                                  showProgress = showProgress
    )

Enfim, acho que ambas estratégias tem suas vantagens e desvantagens. E isso levanta uma pergunta, o que acontece com o município 1234567? Legalmente, ele faz parte da SUDENE? Eu nao sei. Talvez ter essa resposta ajude a gente a decidir qual abordagem seguimos.

ps. agradeço sua paciencia com a demora das minhas respostas. Eu minha filha deve nascer nos proximos dias e as coisas aqui estao bem corridas antes da chegada dela.

@diegomsg
Copy link
Author

Primeiro vamos à parte importante da vida: parabéns pela bebê que tá chegando, muita saúde pra ela e pra mãe.

Agora com relação ao geobr, se entendi bem seu código, vejo a sua abordagem com a mesma dificuldade principal do que propus, pois
max(years) in read_development_region( "NE" ) > max(years) in munis_br

Com Sudene em 2021 e read_municipality até 2020, esse código vai dar erro:

 # assign latest year available if current is chosen
    if (year == 'current') { year <- max(years) }
    
    # download data
    munis_br <- read_municipality(code_muni = 'all',
                                  year = year, 
                                  simplified = simplified,
                                  showProgress = showProgress
    )

O impacto da inexistência de município presente em sudene$max(years) é possível fora da região NE, em MG e ES. A lei 125 de 2021 prevê no Art. 2 p. único:

Quaisquer municípios criados, ou que venham a sê-lo, por desmembramento dos entes municipais integrantes da área de atuação da Sudene de que trata o caput deste artigo, serão igualmente considerados como integrantes de sua área de atuação.

Não vejo como atribuir isso na função sem uma relação (1-*) município anterior - municípios desmembrados.

@rafapereirabr rafapereirabr added the new Data request Request to include data sets in the package label Jul 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new Data request Request to include data sets in the package
Projects
None yet
Development

No branches or pull requests

2 participants