22  Import de données

22.1 osmextract

Le package osmextract (Gilardi et Lovelace, 2025) permet d’extraire des données depuis une base de données OSM directement. Ce package permet de travailler en local sur des volumes de données très importants et ainsi d’éviter de surcharger un serveur Overpass turbo.

La fonction oe_get() permet de télécharger un extrait de la base de données OSM sur une zone particulière et de sélectionner un type d’objet à importer.
L’argument place correspond au nom du fichier *.pbf accessible sur le site Geofabrik. L’argument extra_tag permet de sélectionner les objets de la base OSM correspondant à une clef particulière (se référer à la documentation d’OSM pour choisir les clefs).

Nous nous intéressons ici à l’ensemble des équipements (clef amenity) enregistrés dans la base OSM sous forme de points en Andorre.

library(osmextract)
#> Data (c) OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright.
#> Check the package website, https://docs.ropensci.org/osmextract/, for more details.
osm_pt <- oe_get(place = "Andorra",      
                 layer = "points", 
                 extra_tags = "amenity", 
                 quiet = TRUE)

Des équipements de nature très variés sont saisis dans OSM:

unique(osm_pt$amenity)
#>  [1] NA                       "parking_entrance"       "fuel"                  
#>  [4] "arts_centre"            "restaurant"             "parking"               
#>  [7] "theatre"                "bar"                    "hospital"              
#> [10] "school"                 "pharmacy"               "atm"                   
#> [13] "ski_rental"             "fast_food"              "toilets"               
#> [16] "bank"                   "veterinary"             "post_box"              
#> [19] "pub"                    "shelter"                "car_wash"              
#> [22] "fountain"               "cafe"                   "post_office"           
#> [25] "bench"                  "drinking_water"         "recycling"             
#> [28] "cinema"                 "telephone"              "library"               
#> [31] "nightclub"              "police"                 "kindergarten"          
#> [34] "mini_storage"           "bbq"                    "courthouse"            
#> [37] "car_rental"             "dojo"                   "waste_basket"          
#> [40] "dentist"                "doctors"                "townhall"              
#> [43] "bicycle_parking"        "sanitary_dump_station"  "charging_station"      
#> [46] "place_of_worship"       "community_centre"       "waste_disposal"        
#> [49] "watering_place"         "water_point"            "internet_cafe"         
#> [52] "bus_station"            "motorcycle_parking"     "photo_booth"           
#> [55] "locker"                 "shower"                 "events_venue"          
#> [58] "public_bookcase"        "animal_shelter"         "biergarten"            
#> [61] "childcare"              "clinic"                 "lavoir"                
#> [64] "vending_machine"        "bicycle_rental"         "compressed_air"        
#> [67] "bicycle_repair_station" "taxi"                   "parking_space"         
#> [70] "language_school"        "parcel_locker"          "drinking water"        
#> [73] "luggage_locker"

Nous allons maintenant sélectionner les bars, cafés, pubs et restaurants et les visualiser sur une carte interactive.

poi <- c("bar", "cafe", "pub", "restaurant")
osm_pt <- osm_pt[osm_pt$amenity %in% poi, ]
library(leaflet)
pal <- colorFactor(palette = c("navy", "red", "darkgreen", "gold"),
                   domain = poi)
leaflet(osm_pt) |>
  addProviderTiles("OpenStreetMap.HOT") |>
  addCircleMarkers(radius = 4,
                   stroke = FALSE,
                   color = ~ pal(amenity),
                   fillOpacity = 1,
                   popup = osm_pt$name) |>
  addLegend(pal = pal,
            values = poi,
            opacity = 0.7,
            title = "OSM amenity",
            position = "bottomright"
  ) 
NoteSite web d’osmextract