Codes et API

transport.data.gouv.fr

Télécharge le catalogue du Point d'accès national aux données de transport, garde les jeux dont la zone couverte est l'Isère et produit un tableau récapitulatif exportable.

Scripttransports.data.gouv.R
LangageR
Paquetshttr2, jsonlite, purrr, dplyr, tibble
AuthentificationAucune : API publique du Point d'accès national.
Documentationhttps://transport.data.gouv.fr/swaggerui

Ce que fait le script

  1. Fixer le critère de zone couverte (département 38, ou une AOM).
  2. Importer le catalogue /api/datasets.
  3. Filtrer sur l'Isère, construire le tableau des jeux et de leurs ressources, l'exporter.

Code

transports.data.gouv.R
library(httr2) library(jsonlite) library(purrr) library(dplyr) library(tibble) # ====================================================================================== # 1. CRITERES DE SELECTION #peut aussi être des aom par exemple, voir la documentation # ====================================================================================== covered_area <- list( insee = "38", nom = "Isère", type = "departement" ) # ================================================== # 2. IMPORTER LE CATALOGUE DE L'API # ================================================== url_api <- "https://transport.data.gouv.fr/api/datasets" reponse <- request(url_api) |> req_timeout(120) |> req_perform() stopifnot(resp_status(reponse) == 200) datasets <- fromJSON( resp_body_string(reponse), simplifyVector = FALSE ) cat("Nombre total de jeux de données :", length(datasets), "\n") # ================================================== # 3. FILTRER LES JEUX DE DONNEES SUR L'ISERE # ================================================== datasets_isere <- keep(datasets, function(dataset) { zones <- dataset$covered_area if (is.null(zones) || length(zones) == 0) { return(FALSE) } any(map_lgl(zones, function(zone) { identical(as.character(zone$insee), covered_area$insee) && identical(as.character(zone$nom), covered_area$nom) && identical(as.character(zone$type), covered_area$type) })) }) cat("Jeux de données couvrant l'Isère :", length(datasets_isere), "\n") # ================================================== # 4. CREER UN TABLEAU RECAPITULATIF # ================================================== resultats <- map_dfr(datasets_isere, function(dataset) { tibble( id = as.character(dataset$id), titre = dataset$title, type = dataset$type, url_page = dataset$page_url, nombre_ressources = length(dataset$resources) ) }) print(resultats) # ================================================== # 5. EXPORTER LE CATALOGUE FILTRE # ================================================== write.csv( resultats, "catalogue_transports_isere.csv", row.names = FALSE, fileEncoding = "UTF-8" )