API — Dados geo-referenciados

“Close-up of colorful pins in a world map” by delfi de la Rua on Unsplash

O site cepaberto.com possui uma base colaborativa de CEPs que pode ser acessada gratuitamente por uma API. Em particular, o site permite obter as coordenadas geográficas (latitude e longitude), endereço e bairro de um determinado CEP. Assim, o site é muito útil para construirmos um conjunto de dados georreferenciados.

Isto pode ser feito de maneira bem simples com apenas 2 pacotes do R

Além disso, usaremos as funções

  • GET e content (httr),
  • fromJSON (rjson).

Primeiro defina as seguintes variáveis

  • token: chave de identificação pessoal fornecida pelo cepaberto quando você se cadastra no site,
  • cep_busca: o número do CEP que você deseja obter a latitude e longitude,
  • query: endereço do site que especifica a nossa busca.

Com base nestas variáveis podemos usar a função GET para nos conectar ao site, note que o url que vamos usar é o que está presente na query. Como o token precisa ser passado no header HTTP da requisição vamos usar a opção add_headers(). Assim, obtemos uma requisição do site.

Vamos verificar o status da requisição

Se o resultado do código acima for NULL é porque a requisição não foi encontrada (CEP inválido). Se isso acontecer, quando usarmos a função content o R retornará um erro. Assim, é necessário tester se busca$headers$status é NULL ou não.

A partir dessa requisição usamos a função content para extrair as informações, definidas como texto, que estão no formato JSON. Assim, essa retornará um objeto (também neste formato) e para convertê-lo em um objeto do R (lista) usamos a função fromJSON.

Note que base é utilizada para extrair as informações que estão na lista dados e as colocar no formato dataframe.

Espero que o código seja útil! Informações adicionais no github :)