Skip to content

Commit

Permalink
padronizacao
Browse files Browse the repository at this point in the history
  • Loading branch information
dhersz committed Nov 6, 2024
1 parent a74220c commit 320b10e
Show file tree
Hide file tree
Showing 4 changed files with 503 additions and 5 deletions.
108 changes: 106 additions & 2 deletions R/padronizacao.R
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,114 @@ padronizar_cnefe <- function() {
"nom_titulo_seglogr", # titulo (e.g. general, papa, santa, etc)
"nom_seglogr", # logradouro
"num_adress", # numero
"dsc_modificador", # modificador do numero
"cep", # cep
"lon", # longitude
"lat", # latituted
"nv_geo_coord" # nivel de geocodificacao
)

cnefe <- ipeadatalake::ler_cnefe(2022, colunas = colunas_a_manter)

# se número == 0, setar NA, que vira S/N depois

cnefe <- mutate(
cnefe,
num_adress = ifelse(num_adress == 0, NA_integer_, num_adress)
)

# existem casos em que o titulo do logradouro é repetido no nome do
# logradouro. isso acontece mesmo quando o título do logradouro tem até 3
# palavras. só podemos juntar o nome com o titulo nos casos em que essa
# repetição não ocorre

cnefe <- mutate(
cnefe,
nwords_titulo = stringr::str_count(nom_titulo_seglogr, "\\S+")
)

cnefe <- data.table::setDT(collect(cnefe))

cnefe[nwords_titulo == 1, comeco_logr := stringr::word(nom_seglogr, 1, 1)]
cnefe[nwords_titulo == 2, comeco_logr := stringr::word(nom_seglogr, 1, 2)]
cnefe[nwords_titulo == 3, comeco_logr := stringr::word(nom_seglogr, 1, 3)]
cnefe[nom_titulo_seglogr == comeco_logr, juntar := FALSE]
cnefe[nwords_titulo == 0, juntar := FALSE]
cnefe[is.na(juntar), juntar := TRUE]

cnefe[
,
nome_logradouro := ifelse(
juntar,
paste(nom_titulo_seglogr, nom_seglogr),
nom_seglogr
)
]
cnefe[, c("nom_titulo_seglogr", "nom_seglogr") := NULL]
cnefe[, c("nwords_titulo", "comeco_logr", "juntar") := NULL]

cnefe[, estado := enderecobr::padronizar_estados(code_state)]
cnefe[, code_state := NULL]

cnefe[, municipio := enderecobr::padronizar_municipios(code_muni)]
cnefe[, code_muni := NULL]

cnefe[, cep := enderecobr::padronizar_ceps(cep)]

cnefe[, numero := enderecobr::padronizar_numeros(num_adress)]
cnefe[, num_adress := NULL]

cnefe[
,
`:=`(
logradouro_completo = paste(nom_tipo_seglogr, nome_logradouro, numero),
logradouro_sem_numero = paste(nom_tipo_seglogr, nome_logradouro)
)
]

data.table::setnames(
cnefe,
old = c("code_address", "desc_localidade", "nom_tipo_seglogr"),
new = c("codigo_endereco", "localidade", "tipo_logradouro")
)

data.table::setcolorder(
cnefe,
c(
"codigo_endereco", "estado", "municipio", "localidade", "cep",
"tipo_logradouro", "nome_logradouro", "numero", "logradouro_sem_numero",
"logradouro_completo", "lon", "lat", "nv_geo_coord"
)
)

schema_cnefe <- arrow::schema(
codigo_endereco = arrow::int32(),
estado = arrow::string(),
municipio = arrow::string(),
localidade = arrow::string(),
cep = arrow::string(),
tipo_logradouro = arrow::string(),
nome_logradouro = arrow::string(),
numero = arrow::string(),
logradouro_sem_numero = arrow::large_utf8(),
logradouro_completo = arrow::large_utf8(),
lon = arrow::float64(),
lat = arrow::float64(),
nv_geo_coord = arrow::int8()
)

cnefe_arrow <- arrow::as_arrow_table(cnefe, schema = schema_cnefe)

dir_dados <- file.path(
Sys.getenv("USERS_DATA_PATH"),
"CGDTI/IpeaDataLab/projetos/geolocalizacao/cnefe_padronizado_tmpdir"
)

arrow::write_dataset(
cnefe_arrow,
path = dir_dados,
format = "parquet",
partitioning = "estado",
hive_style = TRUE
)

return(dir_dados)
}
5 changes: 4 additions & 1 deletion _targets.R
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
suppressPackageStartupMessages({
library(targets)
library(dplyr)
})

tar_option_set(trust_timestamps = TRUE)

source("R/padronizacao.R", encoding = "UTF-8")

list(
tar_target(padronizacao, padronizar_cnefe())
tar_target(padronizacao, padronizar_cnefe(), format = "file")
)
4 changes: 2 additions & 2 deletions _targets/meta/meta
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
name|type|data|command|depend|seed|path|time|size|bytes|format|repository|iteration|parent|children|seconds|warnings|error
padronizar_cnefe|function|6c2e94b92c42135a
padronizacao|stem|274ca85b9d987ab1|0e8b7c33747183c6|3b04dbe22eee49f6|704861656||t20032.832925249s|7abe23fc6ac7bb03|175|rds|local|vector|||0||
padronizacao|stem|cfcfd9014a4db4b8|0e8b7c33747183c6|c0a30c215126d086|704861656|//storage6/usuarios/CGDTI/IpeaDataLab/projetos/geolocalizacao/cnefe_padronizado_tmpdir|t20033.7973247289s|8c2f75acc7334810|4927165576|file|local|vector|||1434.67|Potentially unsafe or invalid elements have been discarded from R metadata.ℹ Type externalptr If you trust the source, you can set optionsarrow.unsafe_metadata TRUE to preserve them.. Potentially unsafe or invalid elements have been discarded from R metadata.ℹ Type externalptr If you trust the source, you can set optionsarrow.unsafe_metadata TRUE to preserve them.. Potentially unsafe or invalid elements have been discarded from R metadata.ℹ Type externalptr If you trust the source, you can set optionsarrow.unsafe_metadata TRUE to preserve them.|
padronizar_cnefe|function|6e9f9f3a976f8006|||||||||||||||
Loading

0 comments on commit 320b10e

Please sign in to comment.