Open diegomsg opened 1 year ago
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.
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.
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 |
---|---|
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:
ó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
.
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
?
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:
read_development_region(region = "NE", year = 2022)
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.read_development_region(region = "NE", year = 2007)
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.read_development_region(region = "NE", year = 2015)
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?
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()
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'])
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.
Sudene_2021
fora da região NE
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;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'])
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
?
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.
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.
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.