<div dir="ltr"><div>Elias, boa tarde!</div><div><br></div><div>Fiz uns testes com o georreferenciamento por cep, usando ggmap::geocode(). Na verdade, dá pra fazer uma avaliação da acurácia pelos campos <font face="monospace, monospace">type </font>e <font face="monospace, monospace">loctype </font>retornados quando se utiliza a opção "<font face="monospace, monospace">output=more</font>". Pelo que pude entender, endereços "precisos/acurados" são retornados com a indicação <font face="monospace, monospace">"street_address</font><span style="font-family:monospace,monospace">"</span><font face="arial, helvetica, sans-serif"> em </font><font face="monospace, monospace">type </font><font face="arial, helvetica, sans-serif">e as demais formas são aproximações. No entanto, códigos "</font><span style="font-family:monospace,monospace">postal_code" </span><font face="arial, helvetica, sans-serif">são melhores que </font><span style="font-family:monospace,monospace">"</span><span style="font-family:monospace,monospace">postal_code_prefix".</span></div><div><br></div><div><font face="monospace, monospace">### <code r></font></div><div><font face="monospace, monospace">require("ggmap")</font></div><div><font face="monospace, monospace"># geocodeQueryCheck()</font></div><div><font face="monospace, monospace">adr1 <- c('Rua Toshinobo Katayama, 178, Dourados, MS, Brazil, 79806-030', ### endereço completo</font></div><div><font face="monospace, monospace"> 'Rua Toshinobo Katayama, 171, Dourados, MS', ### endereço completo</font></div><div><font face="monospace, monospace"> 'Dourados, MS, 79806-029', ### não cadastrado, prefixo válido</font></div><div><font face="monospace, monospace"> 'Dourados, MS, 79899-333', ### cep inexistente</font></div><div><font face="monospace, monospace"> 'Dourados, MS, 79806', ### apenas prefixo</font></div><div><font face="monospace, monospace"> 'Dourados, MS, 79806030', ### cep correto</font></div><div><font face="monospace, monospace"> 'Dourados, MS, 79823460', ### cep correto</font></div><div><font face="monospace, monospace"> 'Dourados, MS, 79804970') ### cep correto, zona rural</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">res1 <- geocode(adr1, output="more")</font></div><div><font face="monospace, monospace">res1[c(1:4, 10)]</font></div><div><font face="monospace, monospace"># lon lat type loctype postal_code</font></div><div><font face="monospace, monospace"># 1 -54.80372 -22.23004 street_address rooftop <NA></font></div><div><font face="monospace, monospace"># 2 -54.80460 -22.22413 street_address range_interpolated <NA></font></div><div><font face="monospace, monospace"># 3 -54.80027 -22.22395 postal_code_prefix approximate <NA></font></div><div><font face="monospace, monospace"># 4 -54.79138 -22.22623 bus_station approximate <NA></font></div><div><font face="monospace, monospace"># 5 -54.80027 -22.22395 postal_code_prefix approximate <NA></font></div><div><font face="monospace, monospace"># 6 -54.80409 -22.22820 postal_code approximate 79806-030</font></div><div><font face="monospace, monospace"># 7 -54.83732 -22.21741 postal_code approximate 79823-460</font></div><div><font face="monospace, monospace"># 8 -54.80988 -22.21471 postal_code_prefix approximate <NA></font></div><div><span style="font-family:monospace,monospace">### </code></span><br></div><div><br></div><div>Testando apenas os primeiros 30 ceps do arquivo que você disponibilizou...</div><div><br></div><div><font face="monospace, monospace">### <code r><br></font></div><div><font face="monospace, monospace">url0 <- "<a href="http://leg.ufpr.br/~elias/tmp/cep_curitiba_cwb_georef_longlat.txt">http://leg.ufpr.br/~elias/tmp/cep_curitiba_cwb_georef_longlat.txt</a>"</font></div><div><font face="monospace, monospace">tmp0 <- read.table(url0, head=T, nrows=30)</font></div><div><font face="monospace, monospace">adr2 <- paste0("Curitiba, PR, Brazil, ", tmp0[,1])</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">res2 <- geocode(adr2, output="more")</font></div><div><font face="monospace, monospace">cbind(tmp0, res2[c(1:4,10)])</font></div><div><font face="monospace, monospace">table(res2$type)</font></div><div><font face="monospace, monospace"># route postal_code_prefix postal_code </font></div><div><font face="monospace, monospace"># 2 14 14 </font></div><div><font face="monospace, monospace">### </code></font><br></div><div><br></div><div>Nesse pequeno teste, 16 consultas retornaram resultados muito imprecisos (<span style="font-family:monospace,monospace">route </span>, <span style="font-family:monospace,monospace">postal_code_prefix) </span><font face="arial, helvetica, sans-serif">e os demais são poucos precisos (</font><span style="font-family:monospace,monospace">postal_code)</span><span style="font-family:monospace,monospace">.</span></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div>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:</div><div><br></div><div><div><font face="monospace, monospace">df <- read.table(url0, head=T, nrows=1000)</font></div><div><font face="monospace, monospace">df$cep2 <- round(df$cep/100)*100</font></div><div><font face="monospace, monospace">un <- unique(df$cep2); length(un) # 135</font></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="arial, helvetica, sans-serif">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.</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">A descrição dos códigos está em <</font><font face="monospace, monospace"><a href="https://developers.google.com/maps/documentation/geocoding/?csw=1">https://developers.google.com/maps/documentation/geocoding/?csw=1</a></font><font face="arial, helvetica, sans-serif">>.</font></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr">Éder Comunello <<a href="mailto:comunello.eder@gmail.com" target="_blank">c</a><a href="mailto:omunello.eder@gmail.com" target="_blank">omunello.eder@gmail.com</a>> <br>Dourados, MS - [22 16.5'S, 54 49'W]<br></div></div></div>
<br><div class="gmail_quote"><br></div></div></div>