Osmar : manipuler des données OpenStreetMap avec R

December 15, 2012
By

This post was kindly contributed by Baptiste Coulmont » R - go there to comment and to read the full post.

Il y a parfois un intérêt certain à créer des cartes dans un format vectoriel. Je vais ici utiliser le paquet “osmar”, qui permet d’utiliser des données en provenance d’OpenStreetMap, avec le logiciel R.


cliquez pour ouvrir la carte au format pdf

Pour réaliser cette carte, j’ai suivi les instructions présentées dans ce document osmar: OpenStreetMap and R, by Manuel J. A. Eugster and Thomas Schlesinger.
Pourquoi passer par osmar ? L’on trouve des shapefiles extraits de OpenStreetMap sur différents sites (comme cloudmade), mais ces shapefiles commencent à être très lourds, et ils ne contiennent qu’une partie des informations disponibles sur OpenStreetMap.

install.package(osmar)
library(osmar)
src <- osmsource_api()
bb <- center_bbox(3.0775880813598633,50.37404355240673, 1000, 1000)
ua <- get_osm(bb, source = src)
 
#tracer les bâtiments
bg_ids <- find(ua, way(tags(k == "building")))
bg_ids <- find_down(ua, way(bg_ids))
bg <- subset(ua, ids = bg_ids)
bg_poly <- as_sp(bg, "polygons")
plot(bg_poly, col = "gray",border="gray")
 
#tracer une zone "commerciale"
nat_ids <- find(ua, way(tags(v %in% c("commercial"))))
nat_ids <- find_down(ua, way(nat_ids))
nat <- subset(ua, ids = nat_ids)
nat_poly <- as_sp(nat, "polygons")
plot(nat_poly, col = "#ffaaaa11",add=TRUE,border="#ffffff00")
 
#tracer les cours d'eau
nat_ids <- find(ua, way(tags(k %in% c("waterway"))))
nat_ids <- find_down(ua, way(nat_ids))
nat <- subset(ua, ids = nat_ids)
nat_poly <- as_sp(nat, "polygons")
plot(nat_poly, col = "#aaaaff",add=TRUE,border="#aaaaff",lwd=2)
 
#tracer les parcs
nat_ids <- find(ua, way(tags(k %in% c("leisure"))))
nat_ids <- find_down(ua, way(nat_ids))
nat <- subset(ua, ids = nat_ids)
nat_poly <- as_sp(nat, "polygons")
plot(nat_poly, col = "#99dd99",add=TRUE,border="#99dd99")
 
#tracer les rues, de différentes épaisseurs
cw_ids <- find(ua, way(tags(v %in% c("residential","pedestrian"))))
cw_ids <- find_down(ua, way(cw_ids))
cw <- subset(ua, ids = cw_ids)
cw_line <- as_sp(cw, "lines")
plot(cw_line, add = TRUE, col = "pink",lwd=1)
 
cw_ids <- find(ua, way(tags(v %in% c("secondary"))))
cw_ids <- find_down(ua, way(cw_ids))
cw <- subset(ua, ids = cw_ids)
cw_line <- as_sp(cw, "lines")
plot(cw_line, add = TRUE, col = "pink",lwd=5)
 
cw_ids <- find(ua, way(tags(v %in% c("tertiary"))))
cw_ids <- find_down(ua, way(cw_ids))
cw <- subset(ua, ids = cw_ids)
cw_line <- as_sp(cw, "lines")
plot(cw_line, add = TRUE, col = "pink",lwd=3)

Created by Pretty R at inside-R.org

Sur un thème proche (sélectionné par l'ordinateur) :

  1. Début de cartographie avec R
  2. Cartographie avec R (suite)
  3. Cartographie avec R, “tutoriel”

Tags: , ,

Comments are closed.