├── .gitattributes ├── CEP2COO.Rproj ├── .gitignore ├── CEP2COO.R └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /CEP2COO.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # History files 2 | .Rhistory 3 | .Rapp.history 4 | 5 | # Session Data files 6 | .RData 7 | 8 | # Example code in package build process 9 | *-Ex.R 10 | 11 | # Output files from R CMD build 12 | /*.tar.gz 13 | 14 | # Output files from R CMD check 15 | /*.Rcheck/ 16 | 17 | # RStudio files 18 | .Rproj.user/ 19 | 20 | # produced vignettes 21 | vignettes/*.html 22 | vignettes/*.pdf 23 | 24 | # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3 25 | .httr-oauth 26 | 27 | # knitr and R markdown default cache directories 28 | /*_cache/ 29 | /cache/ 30 | 31 | # Temporary files created by R markdown 32 | *.utf8.md 33 | *.knit.md 34 | .Rproj.user 35 | -------------------------------------------------------------------------------- /CEP2COO.R: -------------------------------------------------------------------------------- 1 | library(reticulate) 2 | library(berryFunctions) 3 | library(photon) 4 | 5 | pycep <- import("pycep_correios") # pip install pycep_correios 6 | urllib3 <- import("urllib3") # pip install urllib3 7 | requests <- import("requests") # pip install requests 8 | 9 | requests$packages$urllib3$disable_warnings(urllib3$exceptions$InsecureRequestWarning) 10 | 11 | cep2coo <- function(cep){ 12 | 13 | # Consulta do endere?o atrav?s do CEP 14 | 15 | address_ = try(paste(pycep$consultar_cep(cep)$end, # endere?o 16 | pycep$consultar_cep(cep)$cidade, # cidade 17 | "Brasil"), silent = TRUE) # pa?s 18 | 19 | address = ifelse(is.error(address_) == T, "-", address_) # Caso CEP invalido 20 | 21 | # Consulta no Open Street Map 22 | 23 | coo <- geocode(iconv(address, from = "UTF-8", to = "ASCII//TRANSLIT"), limit = 1)[,c("lat", "lon")] 24 | 25 | return(coo) 26 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Transformar CEP em latitude e longitude 2 | 3 | A função `cep2coo()` transforma o CEP em dados de latitude e longitude. A função usa recursos do Python para consultar a API dos Correios e R para consultar as coordenadas no [Open Street Map](https://www.openstreetmap.org) (OSM). 4 | 5 | A consulta à API dos correios é feita pela função da biblioteca [pycep-correios](https://pypi.org/project/pycep-correios/) escrita em python. 6 | 7 | Após obter informações de endereço e cidade é feita uma consulta da latitude e longitude no OSM com a função `geocode()` do pacote [photon](https://github.com/rCarto/photon) escrito para o R. 8 | 9 | ## Bibliotecas necessárias em Python e R 10 | 11 | ### Python 12 | 13 | - pycep_correios 14 | - urllib3 15 | - requests 16 | 17 | ### R 18 | 19 | - reticulate 20 | - berryFunctions 21 | - photon 22 | 23 | ## Exemplo 24 | 25 | `cep2coo("20090003") # -22.90369 -43.1782` 26 | 27 | O resultado da latitude e longitude apresentará *missing value* se o CEP for inválido. 28 | 29 | ## Update 30 | 31 | No pacote [rthop](https://github.com/th1460/rthop) está em desenvolvimento a função `cep2coo` que no lugar da biblioteca `pycep_correios` é utilizada uma API, tornando a rotina independente de Python. 32 | 33 | 34 | --------------------------------------------------------------------------------