Visualizing GIS data with R and Open Street Map
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.
1. Download the map
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[1]+0.01, lat_c[1]-0.01), lon = c(lon_c[1]+0.03, lon_c[1]-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.
lat_adj<-function(lat, map){(map$BBOX$ll[1]-lat)/(map$BBOX$ll[1]-map$BBOX$ur[1])}
lon_adj<-function(lon, map){(map$BBOX$ll[2]-lon)/(map$BBOX$ll[2]-map$BBOX$ur[2])
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.
PlotOnStaticMap(OSM.map, lat = lat_adj(lat, OSM.map), lon = lon_adj(lon, OSM.map), col=rgb(200,val,0,85,maxColorValue=255),pch=16,cex=4)
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[1]+0.01, lat_c[1]-0.01), lon = c(lon_c[1]+0.03, lon_c[1]-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[1]-lat)/(map$BBOX$ll[1]-map$BBOX$ur[1])} lon_adj<-function(lon, map){(map$BBOX$ll[2]-lon)/(map$BBOX$ll[2]-map$BBOX$ur[2])} 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") |
2 Responses to Visualizing GIS data with R and Open Street Map
Leave a Reply Cancel reply
Tags
annotation audio editor audio player Befragungssoftware Datenanalyse Einführung experiment software fun GIS Graphics gui JabRef LaTeX Literatur Literaturverwaltung Online-Befragungen Online survey software operating systems Organisation Problembehebung psytoolkit Python R reference manager Renglish Scienceadmin Sicherheit signal analyis simulation software Statistik traveltime video player website writing-up










[...] Visualizing GIS data with R and Open Street Map | Sustainable Research 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. Source: http://www.surefoss.org [...]
[...] OSM et R le mariage possible http://www.surefoss.org/visualisation/visualizing-gis-data-with-r-and-open-street-map/ [...]