Uso de Google Maps en R

Google Maps actualmente es una herramienta que puede ser complementaria a muchas aplicaciones por los servicios y opciones de cartografía que ofrece google, por lo que se puede ahorrar dinero en proyectos muy pequeños o personales y tiempo para generar cosas básicas con cartografía temática y si combinamos esto con la potencia y versatilidad del lenguaje de programación R se pueden tener muy buenos resultados, en proyectos que requieran datos estadísticos o localización de los mismos, como en el siguiente ejemplo de mapa usando la librería de R Rgooglemaps.

#creando mapa de puntos con googlemaps #se instala paquete de google maps para R, el cual carga desde internet información google install.packages("RgoogleMaps") #Se define espacio de trabajo setwd("La ruta de la carpeta que defina") #llamando librerias requeridas require(RgoogleMaps) library(maptools) #leyendo datos datos<- readShapePoints("wgs84.shp") #definiendo centro del mapa lat = c(min(datos$Latitud),max(datos$Latitud)); lon = c(min(datos$Longitud),max(datos$Longitud)); #graficando mapa y puntos , es posible escoger mas opciones de mapa s escoge esta para una mejor compocision MyMap<- GetMap.bbox(latR =lat ,lonR = lon, maptype='terrain', destfile = "garbage_locations.png"); pic = PlotOnStaticMap(MyMap)

convirtiendo coordenadas georaficas a coordenadas de imagen

cord = LatLon2XY.centered(MyMap,datos$Latitud,datos$Longitud)

coordenadas de sitios

points(cord$newX,cord$newY,col=colors()[4],lwd=1)

ubicación de etiquetas

text(cord$newX,cord$newY,datos$Estacion,cex=0.8,col=colors()[4])

Ajuste de coordendas de etiquetas para evitar traslape

loc_x = datos$Longitud; loc_y = datos$Latitud-0.005; i_Canaveralejo = which(datos$Estacion=="Cañaveralejo") i_La_Ermita = which(datos$Estacion=="La Ermita") i_Compartir = which(datos$Estacion=="Compartir") i_Univalle = which(datos$Estacion=="Univalle") i_Pance = which(datos$Estacion=="Pance") i_Base_Aerea = which(datos$Estacion=="Base Aerea") i_Era = which(datos$Estacion=="Era") i_La_Flora = which(datos$Estacion=="La Flora") loc_x[i_Canaveralejo] = loc_x[i_Canaveralejo]-0.009; loc_x[i_La_Ermita] = loc_x[i_La_Ermita]-0.009; loc_x[i_Compartir] = loc_x[i_Compartir]-0.009; loc_x[i_Univalle] = loc_x[i_Univalle]+0.005; loc_y[i_Pance] = loc_y[i_Pance]+0.010; loc_x[i_Base_Aerea] = loc_x[i_Base_Aerea]+0.005; loc_x[i_Era] = loc_x[i_Era]+0.005; loc_x[i_La_Flora] = loc_x[i_La_Flora]+0.005;

Redibujando el mapa

pic = PlotOnStaticMap(MyMap) cord = LatLon2XY.centered(MyMap,datos$Latitud,datos$Longitud) points(cord$newX,cord$newY,col="blue",lwd=2)

Nuevamente coordenadas corregidas de las etiquetas

cord = LatLon2XY.centered(MyMap,loc_y,loc_x) text(cord$newX,cord$newY,datos$Estacion,cex=0.9,col="black" )

mapaEste seria el resultado del codigo anterior.

Si desean saber más sobre esta librería pueden revisar esta dirección https://cran.r-project.org/web/packages/RgoogleMaps/index.html cuenta con la documentación principal de la librería y en caso de otro ejemplo pueden revisar este enlace https://www.r-bloggers.com/heatmap-of-toronto-traffic-signals-using-rgooglemaps/

Está la opción de estadística espacial, usan el lenguaje de programación R, como elemento principal de enseñanza.

Espero que sea de utilidad :)

Written on August 12, 2016