knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = identical(tolower(Sys.getenv("NOT_CRAN")), "true"), out.width = "100%" ) # CRAN OMP THREAD LIMIT to avoid CRAN NOTE Sys.setenv(OMP_THREAD_LIMIT = 2)
A principal função do pacote {geocodebr} é a geocode()
, que recebe uma tabela
(data.frame
) de endereços como entrada e retorna a mesma tabela geolocalizada
como saída. Para demonstrar essa função, utilizamos no exemplo abaixo pequeno
conjunto de dados que contém endereços com problemas comuns, como informações
ausentes e campos digitados incorretamente.
A geolocalização desses dados com {geocodebr} pode ser feita em apenas dois passos:
definir_campos()
para indicar os nomes das
colunas no seu data.frame
que correspondem a cada campo dos endereços. No
exemplo abaixo, nós indicamos que coluna que contém a informação de logradouro se
chama "nm_logradouro"
, que a coluna de número se chama "Numero"
, etc. obs. Note que as colunas indicando o "estado"
e "município"
são obrigatórias.
library(geocodebr) # leitura de amostra de dados ends <- read.csv(system.file("extdata/small_sample.csv", package = "geocodebr")) # definição dos campos de endereço campos <- definir_campos( estado = "nm_uf", municipio = "nm_municipio", logradouro = "nm_logradouro", numero = "Numero", cep = "Cep", localidade = "Bairro" )
geocode()
para encontrar as coordenadas
geográficas dos dados de input.Nota: A função geocode()
requer que os dados do CNEFE estejam armazenados
localmente. A primeita vez que a função é executada, ela baixa os dados do CNEFE
e salva em um cache local na sua máquina. No total, esses dados somam cerca de
3 GB, o que pode fazer com que a primeira execução da função demore. Esses dados,
no entanto, são salvos de forma persistente, logo eles são baixados uma única vez.
Mais informações sobre o cache de dados aqui.
# geolicalização ends_geo <- geocode( enderecos = ends, campos_endereco = campos, resultado_completo = FALSE, resolver_empates = TRUE, resultado_sf = FALSE, verboso = FALSE ) head(ends_geo)
Por padrão, a tabela de output é igual à tabela de input do usuário acrescida de colunas com a latitude e longitude encontradas, bem como de colunas indicando o nível de precisão dos resultados e o endereço encontrado. Quando resultado_completo = TRUE
, o output é acrescido de algumas colunas extras.
Cabe também destacar aqui outros dois argumentos da função geocode()
:
resolver_empates
: serve para indicar se o usuário quer que a função resolva automaticamente casos de empate, i.e. casos que o endereço de input do usuário
pode se referir a diferentes localidades na cidade (e.g. logradouros diferentes
com mesmo nome mas em bairros distintos). Quando TRUE
, a função resolve os
empates selecioando os endereços com maior número de visitas do CNEFE. Quando
FALSE
, a função retorna todos os resultados indicando os casos empatados na
coluna 'empate' para que o usuário possa inspecionar cada caso coluna 'endereco_encontrado'.resultado_sf
: quando TRUE
, o output é retornado como um objeto espacial de classe sf
simple feature.As coordendas espaciais do resultado usam o sistema de referência SIRGAS2000
(EPSG 4674.), padrão adotado pelo IBGE em todo o Brasil. Cada par de coordenadas encontrado pode ser classificado conforme o seu grau de precisão (coluna
precisao
) e os campos do endereço utilizados para encontrá-lo (tipo_resultado
).
A seção a seguir apresenta mais informações sobre essas colunas.
As coordenadas incluídas no resultado da geocode()
são calculadas a partir da
média das coordenadas dos endereços do CNEFE que correspondem a cada um dos
endereços de input. A correspondência entre os endereços de entrada e os do
CNEFE pode ser feita com base em diferentes combinações de campos, impactando,
assim, na precisão do resultado retornado.
No caso mais rigoroso, a função encontra uma correspondência determinística para cada um dos campos do endereço (estado, município, logradouro, número, CEP e localidade). Pense, por exemplo, em um prédio com vários apartamentos, cuja única variação no endereço se dá a nível de apartamento: o resultado, nesse caso, é a média das coordenadas dos apartamentos, que podem diferir ligeiramente.
Em um caso menos rigoroso, no qual são encontradas correspondências apenas para os campos de estado, município, logradouro e localidade, a função calcula as coordenadas médias de todos os endereços do CNEFE que se encontram na mesma rua e na mesma localidade. O resultado, portanto, é agregado a nível de rua, tendendo para a extremidade do logradouro com maior concentração de endereços.
A coluna precisao
se refere ao nível de agregação das coordenadas do CNEFE
utilizadas pela geocode()
. A função sempre retorna o resultado de maior
precisão possível - ou seja, ela só vai procurar endereços com precisão
"numero_aproximado"
(ver a seguir) caso não tenha encontrado correspondência
de precisão "numero"
. As coordenadas calculadas podem ser classificadas em
seis diferentes categorias de precisão:
"numero"
- calculadas a partir de endereços que compartilham o mesmo
logradouro e número;"numero_aproximado"
- calculadas a partir de endereços que compartilham o
mesmo logradouro, mas número de input não encontra correspondência exata no
CNEFE e sua localização é calculada a partir de uma interpolação espacial;"logradouro"
- calculadas a partir de endereços que compartilham o mesmo
logradouro (número de input está ausente ou é S/N);"cep"
- calculadas a partir de endereços que compartilham o mesmo CEP;"localidade"
- calculadas a partir de endereços que compartilham a mesma
localidade;"municipio"
- calculadas a partir de endereços que compartilham o mesmo
município.A coluna tipo_resultado
fornece informações mais detalhadas sobre os campos de
endereço utilizados no cálculo das coordenadas de cada endereço de entrada. Cada
categoria é nomeada a partir de um código de quatro caracteres:
d
ou p
, determina se a correspondência foi feita de
forma determinística (d
) ou probabilística (p
);precisao
na qual o resultado foi
classificado (n
para "numero"
, a
para "numero_aproximado"
, l
para
"logradouro"
, c
para "cep"
, b
para "localidade"
e m
para
"municipio"
);As categorias de tipo_resultado
são listadas abaixo, junto às categorias de
precisao
a qual elas estão associadas:
"numero"
dn01
- logradouro, numero, cep e localidadedn02
- logradouro, numero e cepdn03
- logradouro, numero e localidadedn04
- logradouro e numeropn01
- logradouro, numero, cep e localidadepn02
- logradouro, numero e ceppn03
- logradouro, numero e localidadepn04
- logradouro e numero
precisao "numero_aproximado"
da01
- logradouro, numero, cep e localidadeda02
- logradouro, numero e cepda03
- logradouro, numero e localidadeda04
- logradouro e numeropa01
- logradouro, numero, cep e localidadepa02
- logradouro, numero e ceppa03
- logradouro, numero e localidadepa04
- logradouro e numero
precisao "logradouro"
(quando o número de entrada está faltando 'S/N')
dl01
- logradouro, cep e localidadedl02
- logradouro e cepdl03
- logradouro e localidadedl04
- logradouropl01
- logradouro, cep e localidadepl02
- logradouro e ceppl03
- logradouro e localidadepl04
- logradouro
precisao "cep"
dc01
- municipio, cep, localidadedc02
- municipio, cep
precisao "localidade"
db01
- municipio, localidade
precisao "municipio"
dm01
- municipioEndereços não encontrados são retornados com latitude, longitude, precisão e tipo de resultado NA
.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.