Clé d'API (en-tête Api-Key) : clé du hackathon dans l'Excel du SSP Cloud. Ne jamais publier une clé dans le dépôt : la lire depuis une variable d'environnement (Sys.getenv("MA_CLE")).
Ce que fait le script
Fixer départ, arrivée, profil (MEDIAN, RIDE), type de vélo et vitesse.
Construire le corps JSON et envoyer la requête à computedroutes.
Lire la réponse : distance, durée, géométrie, itinéraire touristique.
Code
calculateur_itineraire_geovelo.R
install.packages(c("httr2", "jsonlite"))library(httr2)library(jsonlite)# ============================================================# API GEOVELO - CALCUL D'ITINERAIRE A VELO# ============================================================# 1. PARAMETRES A MODIFIER# ------------------------------------------------------------# URL de l'APIurl_api <- "https://backend.geovelo.fr/api/v2/computedroutes"# Cle API : remplacer par ta propre clecle_api <- "Ma clé" #Clé pour le hackathon dispo dans l'excel données à disposition# Coordonnees du departdepart_lat <- 45.367018depart_lon <- 5.593923depart_nom <- "Musée Mainssieux - Voiron"# Coordonnees de l'arriveearrivee_lat <- 44.816186arrivee_lon <- 5.522818arrivee_nom <- "Monument du Pas de l'Aiguille - Chichilianne"# Options de calculprofil_velo <- "MEDIAN" #Remplacer le profil par "RIDE" pour n'avoir que l'itinéraire touristique en résultattype_velo <- "TRADITIONAL"vitesse_moyenne <- 15instructions <- FALSEelevations <- FALSEgeometry <- TRUEsingle_result <- FALSEshow_ride_itinerary <- TRUE #à ajouter pour voir l'itinéraire touristique# 2. CONSTRUCTION DU CORPS JSON# ------------------------------------------------------------corps <- list( waypoints = list( list( latitude = depart_lat, longitude = depart_lon, title = depart_nom ), list( latitude = arrivee_lat, longitude = arrivee_lon, title = arrivee_nom ) ), bikeDetails = list( profile = profil_velo, bikeType = type_velo, averageSpeed = vitesse_moyenne ), transportModes = c("BIKE", "PEDESTRIAN"))# 3. CONSTRUCTION DE LA REQUETE# ------------------------------------------------------------requete <- request(url_api) |> req_url_query( instructions = tolower(as.character(instructions)), elevations = tolower(as.character(elevations)), geometry = tolower(as.character(geometry)), single_result = tolower(as.character(single_result)) ) |> req_headers( `Content-Type` = "application/json", `Api-Key` = cle_api ) |> req_body_json(corps, auto_unbox = TRUE)# 4. ENVOI DE LA REQUETE# ------------------------------------------------------------reponse <- req_perform(requete)# 5. LECTURE DE LA REPONSE# ------------------------------------------------------------# Afficher le code HTTPprint(resp_status(reponse))# Lire la reponse JSON dans Rresultat <- resp_body_json( reponse, simplifyVector = FALSE)# Afficher la structure completestr(resultat)# Afficher le contenu completprint(resultat)