Você está na página 1de 5
Geocode usando oR Leonard Mendonga de Assis Recentemente precisei utilizar coordenadas geograficas em uma apresentagao de resultados. Tinha lido algumas coisas sobre bibliotecas no R que utilizavam 0 Google Maps, entao decidi pesquisar mais 0 assunto, Este documento é apenas um exemplo do que pode ser feito, utiizei basicamente a biblioteca RgoogleMaps (http://cran.r-project.org/web/packages/RgoogleMaps/index html), mas possuem outras alternativas de utilizagao acessando diretamente a API do Google, mas em 90% dos casos, isto nao & necessério. Antes de mais nada, devemos criar alguns dados artificiais para brincar. cidades <- ¢("Belo Horizonte MG", "Contagen MG ‘Montes Claros M6", “Uberaba MG", "varginha MG", "Governador Valadares MG", “Salto da Divisa M6", "quiz de Fora Ne", “Uberlandia Mc", "para de Minas NG", "Bom Despacho MG", “Manhuacu NG", Tres Pontas MG", "Sao Sebastiao do Paraiso MG", “Iturama MG", “Joaima MG", "Rio Casca MG", "Tres Coracoes MG", ‘Vicosa MG", "Nontalvania MG", “Frutal MG", “Ipatinga MG", "Aimores MG DF <- data.frame(cidad: juriae MG", “Januaria M6") idades, la ‘Ao longo deste exemplo, iremos carregar as bibliotecas tao logo sejam requeridas. Para localizar as coordenadas (geoCode) através de um enderego, existe a fungdo getGeocode) require (Rgoogletaps) 4 Loading required package: RgoogleMaps getGeocode("Belo Horizonte, Minas Gerais, Brazil") a lat Jon WH -19.92 -43.94 © que, para 0 exemplo acima, retorna as coordenadas aproximadas do municipio de Belo Horizonte, em Minas Gerais, provavelmente por interpolagao. O interessante desta rotina é que ela parece ter alguns problemas com palavras acentuadas, reparem o que acontece quando aciono a fungao para a cidade de Uberlandia - MG: getGeoCode("Uberlandia MG") #8 Lat lon WHOA NA Mas se eu busco pela palavra sem o acento, a fungao me retorna o valor correto: getGeoCode("Uberlandia MG") a lat lon a -18.91 -48.28 Ja a questo de fazer a pesquisa para mais de um municipio pode ser tratada pelo R de uma maneira igualmente simples, sem a adogao de loops: DF <- with(DF, data.frame(cidade=cidade, t(sapply(DF$cidade, getGeoCode)))) knitr::kable(DF, format="narkdown", digits=4) |cidade So So “* So ft# [Belo Horizonte MG | -19.92| -43.94) ## [Contagem HG | -19.92] 44.08] ## [Juiz de Fora MG | -21.76] 43.34] 4 [Uberlandia MG | -18.91] -48.28] 4 [Montes Claros M6 | -16.73| 43.86] 4 [Uberaba MG | -19.75| -47.94) 4 [Varginha MG | -21.56] -a5.44] ft# [Governador Valadares MG | 18.85] -41.96] Ht [Salto da Divisa MG | -16.01] -39.941 # [Para de Minas m6 | -19.86] -44.61| 4# [Bom Despacho MG | -19.74] 45.26] ## [Manhuacu M6 | -20.26] -42.03] Ht [Rio Casca MG | -20.23| -42.65] ## [Tres Coracoes M6 | -21.69] 45.25] 4H [Tres Pontas NG | -21.37| -45.51] H# |Sa0 Sebastiao do Paraiso MG | -20.92| -46.98| fie [Tturama 6 | -19.73] -5@.26| 4 [Joaina MG | -16.65] -42.02 Ht |Vicosa MG | -20.75| 42.88] #8 [Montalvania NG | -14.42| -44.37] 4 [Frutal #6 | -20.03] -48.94] ## [Tpatinga MG | -19.47| -42.55] Ht [Aimores MG | -19.50] -41.07] #8 [Muriae MG | -21.23] -42.37/ ## [Jonuaria HG | -15.48] 44.36 Outra forma de ser feito seria contar com o auxilio da biblioteca plyr (http://eran.r- project.orgiweb/packagesiplyr/index.htm|) require(plyr) 4 Loading required package: plyr x<-ldply(DFScidade, function(x) getGeoCode(x)) knitr: :kable( data. frame(cidade=cidades,x), fornat="narkdown" , digits=4) co % ## [cidade | lat} Ion] ae | #H# [Belo Horizonte M6 | -19.92| 43.941 ## [Contagen M6 | -19.92| -44.08] Ht [Juiz de Fora MG | -21.76] 43.34] # |Uberlandia MG | -18.91 -48.28| ## [Montes Claros "6 | -16.73] -43.86] #8 [Uberaba M6 | -19.75| -47.94] 4 [Varginha MG | -21.56] -45.441 4# |Governador Valadares MG | 18.85] -41.96] ## [Salto da Divisa MG | -16.01| -39.94] 4H [Para de Minas M6 | -19.86] 44.61] f## [Bom Despacho M6 | -19.74] -45.26] ## [Manhuacu MG | -20.26] -42.03] HH [Rio Casca M6 | -20.23] 42.65] ## [Tres Coracoes ™6 | -21.69] -45.25] ## [Tres Pontas MG | -21.37] 45.51] #8 [S20 Sebastiao do Paraiso MG | -20.92| -46.98| 4 [Tturana MG | -19.73] -50.28] ## [oaima HG | -16.65| -41.02| 4H [Vicosa MG | -20.75| -42.88] 4 [Montalvania MG | -14,42| 44.37] He [Frutal M6 | -20.03| -48.94] ## [Ipatinga M6 | -19.47] 42.55] 4H [Aimores MG | -19.50| -41.07] Hf [Muriae MG | -21.23] 42.37] ## [Januaria M6 | -15.48] -44.36] Podemos agora criar um mapa utilizando as coordenadas recém descobertas. Para desenhar o mapa, usaremos neste exemplo as bibliotecas ggplot2 (http://eran.r- project org/web/packages/ggplot2/index html) e ggmap (http://eran.r- project org/web/packages/ggmap/index.html). A primeira coisa a fazer & recuperar o mapa utilizando e depois plotar o que nos interessa. No nosso caso, os municipios e depois plotar os pontos em cima do mesmo require(ggplot2) # Loading required package: geplot2 require(ggmap) 8 Loading required package: genap box <- make_bbox(lon, lat, data = DF) A fungdo acima nos retorna a regiéo compreendida pelos pontos que pretendemos mostrar em nosso mapa. map <- genap( get_map(location = box, maptype="toner", source="stanen") de geon_point (data-DF, x-DF$1on, y=DF$lat, color map ed") yt Be hopes, f IM inom Nabune -Brasilia ‘ te 16 Anges + Liziiria > . Montes Ciaros . (! Goiania £ 2 Tettio Oli 3 at ao 4, 5 « Patos deMinas Uberti x 3 Goverdor Vata Coronel Fabsriciano ., ) stinks patinga Re LUoeraba Ribeiro dus Neves « 20- p S seim**Belo Horizonte sau Barretos 6 Franca 1 fe 2 Rio Preto * Cachoeirg de Itapemirim 8" Brig E importante ressaltar que o parametro maptype reconhece os seguintes valores: maptype = (*terrain®, “satellite roadmap", “hybrid”, “toner”, “watercolor”) Jéo parametro source reconhece os seguintes valores: source = ¢("google", “osm”, “stanen", “cloudnade") Portanto, podemos colocar outras coisas como fundo. O mapa estilo Google ficaria assim: map <- ‘gemap( get_map(location = box, maptype de geom_point (dat: ‘terrain", source="google", colo bw") F FSlon, y=DF$lat, color="red") it Warning: bounding box given to google - spatial extent only approximate. 4 converting bounding box to center/zoom specification. (experimental) 48 Map from URL : http://maps.googleapis. com/maps/api/staticmap?center=-18.092938, -45.0682418z00 m=68size-%20640x6408s cale=%2028naptype=terrain&sensor=false #8 Google Maps API Terms of Service : http://developers. google. com/maps/terms map = oo ae cad j we Sie Paulo ee danetre Cinpnass goede, Soe a + Saccanae wi" : ina 48 44 40

Você também pode gostar