🇨🇵 API Ciblée Obs (FR)

🇨🇵 API Ciblée Obs (FR)

Jun 12, 2025

 

Pré-requis : avoir consulté l'aide d'utilisation des API du portail de Météo-France

Caractéristiques principales de cette API :

  • Durée de rétention (profondeur) des données = 24h

  • Temps réel = oui

  • Archive = non

  • Granularité d'accès = 1 station

  • Domaine = France métropole et outre-mer

  • Fréquence d'actualisation =

    • liste des stations d'observation = horaire

    • observations horaires = horaire (heure ronde + 10')

    • observations 6 minutes = toutes les 6'

  • Synchrone/asynchrone = synchrone

  • Limitation(s) =

    • une recherche pour une date plus ancienne que les 24h de rétention ramènera la donnée la plus ancienne disponible

Fonctionnement de l'API :

Cette API donne accès aux données d'observation temps réel des stations d'observations météorologiques de Météo-France en cours de fonctionnement.

  1. Rechercher l'identifiant de la station (n° à 8 chiffres) avec le web service :
    /liste-stations
    NB : il est possible de faire une recherche graphique sur la page d' "information des stations" du portail des Données Publiques

  2. Télécharger les mesures d'une station pour une date sur les dernières 24h avec les web services :
    selon la fréquence des données d'observation recherchées (6 minutes ou horaire)
    /station-infra-horaire-6m
    /station-horaire
    renvoie la donnée disponible à la date la plus proche de la date demandée.

Erreurs courantes :

  • erreur de confusion entre API Observations et API Climatologie :

    • l'API des données d'observation renvoie les données "brutes" temps réels, sur 24h, des stations en activité

    • l'API de données climatologiques donne accès à l'archive qualifiée des observations de toutes les stations historisées de MF, quelles soient encore actives ou pas

  • téléchargement d'un fichier CSV ne contenant que la ligne d'entête ou d'un JSON ne contenant qu'une liste vide => la station demandée n'existe pas, ou requête dans le futur

  • erreur 400 et message "Identifiant station sémantiquement incorrect" => lorsque le n° de la station ne contient pas 8 chiffres exactement
    Par exemple, il faut conserver le 0 (zéro) devant les n° de station des départements : 01 (Ain) à 09 (Ariège). Cf cas d'usages ci-dessous

  • erreur 400 et message "Le paramètre xxx est une date future." => explicite

Cas d'usage :

En mode développement, je cherche à télécharger puis afficher sur une carte  les observations mesurées par une station d'observation en temps réel près de chez moi (Arbent - 01) au format GeoJSON

  1. téléchargement de la liste des stations avec un token OAuth2 :
    téléchargement de la liste des stations métropole et outre-mer :

    curl -X 'GET' \   'https://public-api.meteofrance.fr/public/DPObs/liste-stations' \   -H 'accept: */*' \ -H 'Authorization: Bearer <votre_token_oauth2_ici>' -JO curl: Saved to filename 'liste-stations-obs-metropole-om.csv'

     

  2. affichage du CSV de la liste des stations et choix de la station la plus proche :

    • CSV "brut" avec un éditeur de texte : les 0 (zéros) non significatifs apparaissent pour les départements de 01 à 09

      image-20250612-173524.png
    • CSV importé dans un tableur (Excel, Calc, Numbers, ...) : ⚠️ les 0 (zéros) non significatifs n'apparaissent pas pour les départements de 01 à 09 !! Il ne faut pas oublier de les inclure dans le n° de station au risque d'avoir une erreur (cf "Erreurs courantes")

  3. téléchargement des données Obs 6m au format GeoJSON pour la station ARBENT et la date courante :
    téléchargement des données Obs 6m au format GeoJSON pour la date courante :

    curl -X 'GET' \ 'https://public-api.meteofrance.fr/public/DPObs/station/infrahoraire-6m?id_station=01014002&format=geojson' \ -H 'accept: */*' \ -H 'Authorization: Bearer <votre_token_ici>' -JO curl: Saved to filename 'obs-infrahoraire-6m_01014002_2024-05-06T13:48:56Z.geojson'
  4. affichage du contenu du fichier GeoJSON contenant 1 station (cf. documentation des produits pour la description du contenu) :
    affichage du contenu du fichier GeoJSON :

    [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ 5.669, 46.278167 ] }, "properties": { "geo_id_insee": "01014002", "reference_time": "2024-05-06T13:42:07Z", "insert_time": "2024-05-06T13:37:03Z", "validity_time": "2024-05-06T13:36:00Z", "t": 283.75, "td": 282.15, "u": 90, "dd": 210, "ff": 2, "dxi10": 230, "fxi10": 3.9, "rr_per": 0, "t_10": null, "t_20": null, "t_50": null, "t_100": null, "vv": null, "etat_sol": null, "sss": 0, "insolh": null, "ray_glo01": null, "pres": null, "pmer": null } } ]
  5. utilisation du GeoJSON sur une application cartographique (hors du périmètre de fonctionnement de l'API)=> intérêt du choix GeoJSON pour afficher des données géolocalisées

    Par exemple sur uMap (basé sur et opéré par OpenStreetMap) : https://umap.openstreetmap.fr/fr/

image-20250612-173806.png