[R-br] georeferenciamento CEP Curitiba

Éder Comunello comunello.eder em gmail.com
Segunda Maio 4 16:53:39 BRT 2015


Elias, boa tarde!

Fiz uns testes com o georreferenciamento por cep, usando ggmap::geocode().
Na verdade, dá pra fazer uma avaliação da acurácia pelos campos type e loctype
retornados  quando se utiliza a opção "output=more". Pelo que pude
entender, endereços "precisos/acurados" são retornados com a indicação
"street_address" em type e as demais formas são aproximações. No entanto,
códigos "postal_code" são melhores que  "postal_code_prefix".

### <code r>
require("ggmap")
# geocodeQueryCheck()
adr1 <- c('Rua Toshinobo Katayama, 178, Dourados, MS, Brazil, 79806-030',
### endereço completo
          'Rua Toshinobo Katayama, 171, Dourados, MS', ### endereço completo
          'Dourados, MS, 79806-029',                   ### não cadastrado,
prefixo válido
          'Dourados, MS, 79899-333',                   ### cep inexistente
          'Dourados, MS, 79806',                       ### apenas prefixo
          'Dourados, MS, 79806030',                    ### cep correto
          'Dourados, MS, 79823460',                    ### cep correto
          'Dourados, MS, 79804970')                    ### cep correto,
zona rural

res1 <- geocode(adr1, output="more")
res1[c(1:4, 10)]
#         lon       lat               type            loctype postal_code
# 1 -54.80372 -22.23004     street_address            rooftop        <NA>
# 2 -54.80460 -22.22413     street_address range_interpolated        <NA>
# 3 -54.80027 -22.22395 postal_code_prefix        approximate        <NA>
# 4 -54.79138 -22.22623        bus_station        approximate        <NA>
# 5 -54.80027 -22.22395 postal_code_prefix        approximate        <NA>
# 6 -54.80409 -22.22820        postal_code        approximate   79806-030
# 7 -54.83732 -22.21741        postal_code        approximate   79823-460
# 8 -54.80988 -22.21471 postal_code_prefix        approximate        <NA>
### </code>

Testando apenas os primeiros 30 ceps do arquivo que você disponibilizou...

### <code r>
url0 <- "http://leg.ufpr.br/~elias/tmp/cep_curitiba_cwb_georef_longlat.txt"
tmp0 <- read.table(url0, head=T, nrows=30)
adr2 <- paste0("Curitiba, PR, Brazil, ", tmp0[,1])

res2 <- geocode(adr2, output="more")
cbind(tmp0, res2[c(1:4,10)])
table(res2$type)
#             route postal_code_prefix        postal_code
#                  2                 14                 14
### </code>

Nesse pequeno teste, 16 consultas retornaram resultados muito imprecisos (
route , postal_code_prefix) e os demais são poucos precisos (postal_code).

Desse modo, acredito que não há grande vantagem em consultar todos os ceps
e o número de consultas poderia ser diminuído consideravelmente se eles
fossem 'generalizados" . A opção mais radical seria fazer a consulta pelos
prefixos (primeiros 5 dígitos) e outras mais brandas seriam algo do tipo:

df      <- read.table(url0, head=T, nrows=1000)
df$cep2 <- round(df$cep/100)*100
un <- unique(df$cep2); length(un) # 135

Nesse caso seriam 135 consultas ao invés das 1000 iniciais, o que
facilitaria bem a tarefa. Logicamente, haveria uma perda ainda maior de
precisão/acurácia. Resta saber se  a perda é tolerável/aceitável.

A descrição dos códigos está em <
https://developers.google.com/maps/documentation/geocoding/?csw=1>.

Éder Comunello <c <comunello.eder em gmail.com>omunello.eder em gmail.com>
Dourados, MS - [22 16.5'S, 54 49'W]
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150504/cb59b045/attachment.html>


Mais detalhes sobre a lista de discussão R-br