# Visualizing GIS data with R and Open Street Map

October 8, 2011
By

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

In this post I way to share with you some code to use Openstreetmap – maps as a backdrop for a data visualization. We will use the RgoogleMaps-package for R. In the following I will show you how to make this graph.

I wanted to take a closer look at an area around my former neighborhood, which is in Bochum, Germany.

lat_c<-51.47393
lon_c<-7.22667
bb<-qbbox(lat = c(lat_c+0.01, lat_c-0.01), lon = c(lon_c+0.03, lon_c-0.03))

Once this is done, you can download the corresponding Openstreetmap tile with the following line.

OSM.map<-GetMap.OSM(lonR=bb\$lonR, latR=bb\$latR, scale = 20000, destfile=”bochum.png”)

## 2. Add some points to the graphic

Now your second step will most likely be adding points to the map. I choose the following two.

lat <- c(51.47393, 51.479021)
lon <- c(7.22667, 7.222526)
val <- c(10, 100)

As the R-package was mainly build for google-maps, the coordinates need to be adjusted by hand. I made the following functions, that take the min and max value from the downloaded map.

Now you can add some points to the map. If you want them to mean anything it may be handy to specify an alpha-level and change some aspects of the points, e.g. size, color, alpha corresponding to some variable of interest.

Here is the full code:

 ```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ``` ```require(RgoogleMaps)   #define the part of the world you want to plot. Here the area around my former home. lat_c<-51.47393 lon_c<-7.22667 bb<-qbbox(lat = c(lat_c+0.01, lat_c-0.01), lon = c(lon_c+0.03, lon_c-0.03))   # download the tile from OSM OSM.map<-GetMap.OSM(lonR=bb\$lonR, latR=bb\$latR, scale = 20000, destfile="bochum.png") image(OSM.map) #Add some coordinates lat<- c(51.47393, 51.479021) lon<- c(7.22667, 7.222526) val <- c(0, 255)   #function to adjust the coordinates lat_adj<-function(lat, map){(map\$BBOX\$ll-lat)/(map\$BBOX\$ll-map\$BBOX\$ur)} lon_adj<-function(lon, map){(map\$BBOX\$ll-lon)/(map\$BBOX\$ll-map\$BBOX\$ur)}   PlotOnStaticMap(OSM.map, lat = lat_adj(lat, OSM.map), lon = lon_adj(lon, OSM.map), col=rgb(255,0, val,90,maxColorValue=255),pch=16,cex=4)   dev.print(jpeg,"test.jpeg", width=1204, height=644, units="px")```

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.