-
Notifications
You must be signed in to change notification settings - Fork 4
Description
J'ai de grosses difficultés à obtenir un accès à l'API ATMO-France. J'ai contacté leur support, et on m'a d'abord dit que c'était un problème de mail trop peu commun (j'ai mon propre nom de domaine), puis que c'était bon j'allais avoir mes accès. Je n'ai toujours pas de mail avec mes identifiants, et ne suis peut-être pas le seul à avoir ce problème.
Or, ATMO France propose, en plus d'un accès à leur API avec compte obligatoire, un accès à un serveur WFS totalement public.
Par exemple, pour obtenir la totalité des informations instantanées sur les pollens, on peut faire
import json
from owslib.wfs import WebFeatureService
wfs = WebFeatureService("https://data.atmo-france.org/geoserver/ind_pol/ows", version="2.0.0")
all_pollen = json.load(wfs.getfeature(
typename='ind_pol:ind_pol',
outputFormat="application/json"))
print([x for x in all_pollen["features"] if x["properties"]["code_zone"] == "69092"])qui donne:
[{'type': 'Feature',
'id': 'ind_pol.fid--1cf7767e_197a68a1662_-2b9b',
'geometry': None,
'geometry_name': 'the_geom',
'properties': {'date_maj': '2025-06-24T14:09:03.965Z',
'alerte': True,
'code_ambr': 1,
'code_arm': 1,
'code_aul': 1,
'code_boul': 1,
'code_gram': 4,
'code_oliv': 1,
'code_zone': '69092',
'conc_ambr': 0,
'conc_arm': 0.1,
'conc_aul': 0,
'conc_boul': 0,
'conc_gram': 136.9,
'conc_oliv': 1.9,
'date_dif': '2025-06-24T10:42:57Z',
'date_ech': '2025-06-24',
'lib_qual': 'Élevé',
'lib_zone': 'Gleizé',
'type_zone': 'commune',
'pollen_resp': 'GRAMINEE',
'source': 'Atmo Auvergne-Rhône-Alpes',
'code_qual': 4}},
{'type': 'Feature',
'id': 'ind_pol.fid--1cf7767e_197a68a1662_-1bde',
'geometry': None,
'geometry_name': 'the_geom',
'properties': {'date_maj': '2025-06-24T14:09:03.965Z',
'alerte': True,
'code_ambr': 1,
'code_arm': 1,
'code_aul': 1,
'code_boul': 1,
'code_gram': 4,
'code_oliv': 1,
'code_zone': '69092',
'conc_ambr': 0,
'conc_arm': 0.1,
'conc_aul': 0,
'conc_boul': 0,
'conc_gram': 110.8,
'conc_oliv': 1.1,
'date_dif': '2025-06-24T10:43:15Z',
'date_ech': '2025-06-25',
'lib_qual': 'Élevé',
'lib_zone': 'Gleizé',
'type_zone': 'commune',
'pollen_resp': 'GRAMINEE',
'source': 'Atmo Auvergne-Rhône-Alpes',
'code_qual': 4}},
{'type': 'Feature',
'id': 'ind_pol.fid--1cf7767e_197a68a1662_-c28',
'geometry': None,
'geometry_name': 'the_geom',
'properties': {'date_maj': '2025-06-24T14:09:03.965Z',
'alerte': True,
'code_ambr': 1,
'code_arm': 1,
'code_aul': 1,
'code_boul': 1,
'code_gram': 4,
'code_oliv': 1,
'code_zone': '69092',
'conc_ambr': 0,
'conc_arm': 0.1,
'conc_aul': 0,
'conc_boul': 0,
'conc_gram': 85,
'conc_oliv': 0,
'date_dif': '2025-06-24T10:43:33Z',
'date_ech': '2025-06-26',
'lib_qual': 'Élevé',
'lib_zone': 'Gleizé',
'type_zone': 'commune',
'pollen_resp': 'GRAMINEE',
'source': 'Atmo Auvergne-Rhône-Alpes',
'code_qual': 4}}]Et si l'on utilise typename='ind_pol:ind_national_pol' à la place de typename='ind_pol:ind_pol' on a en plus
{'type': 'MultiPolygon',
'coordinates': [[[[522992.5237, 5777183.8034],
[522528.4005, 5776355.6861],
[521421.2752, 5776221.6148],
[518584.3289, 5777003.2445],
[518512.654, 5779254.5397],
[520858.8474, 5780875.875],
[525415.9042, 5782054.8715],
[525352.3863, 5780302.2356],
[522992.5237, 5777183.8034]]]]}dans geometry à la place de None (mais ça a l'air plus lent à télécharger, et ça n'a pas l'air aussi "officiel").
Toutes les informations sont là: https://map.atmo-france.org/flux
Par exemple pour avoir l'indice ATMO il faut utiliser
wfs = WebFeatureService("https://data.atmo-france.org/geoserver/ind/ows", version="2.0.0")
all_atmo = json.load(wfs.getfeature(
typename='ind:ind_atmo',
outputFormat="application/json"))L'adresse est obtenue en survolant l'icône "WFS" et en ne gardant que la partie avant le ? et le typename est dans le tableau, colonne "nom technique".
Ce changement pourrait permettre une intégration qui ne requiert pas de login....