KANO
Le service KANO permet d'accéder aux données (sites, réseaux de mesures et prévisions météorolgoiques) stockées dans le système de base de données MongoDB de façon unifiée en JSON via l'API de l'application Kano.
Cette API est notamment utilisée par le client de l'application Kano pour la visualisation temps-réel de l'ensemble des données.
Jeux de données exposés
SitesEURDEPZones sous influenceVigicruesTelérayOpenRadiationICOSRTEHydrométrie Hub'EauRadomeSemenceZones sous le ventArpègeAromeGFS
Utilisation
Attention
Les volumes de données manipulés via le service pouvant être volumineux il est fortement recommandé de filtrer ces données de façon temporelle et spatiale dans des plages de temps et des zones de taille limitée.
Le service propose en général une limite dans le nombre de résultats par défaut pour éviter une surcharge trop importante.
L'URL de base pour accéder au service est https://api.planet._DOMAIN_/kano, la méthode d'accès présentée ici se limite au protocole HTTP standard. Il existe également un accès via Websocket pour des performances optimales qui est explicité dans la documentation du kit de développement KDK.
Note
Pour plus de lisibilité dans les exemples présentées ici les URL ne sont pas encodées mais il peut être nécessaire de le faire suivant le type de client utilisé.
Les capacités de requêtage et la structure des données transitant via l'API étant détaillées dans la documentation du kit de développement KDK, nous présentons ici des exemples de requêtes types.
Sites nucléaires
Les sites sur lesquels sont archivés les prévisions météorologiques sont stockés dans la collection/service nuclear-sites.
Ci-après quelques exemples de requêtes :
- lister tous les sites
- lister les sites en France :
Zones sous influence
Les zones sous influence sont stockés dans la collection/service zi.
Ci-après quelques exemples de requêtes :
- lister toutes les zones à 5 Kms (possible aussi pour 10 Kms)
- lister les zones contenant une localisation (peut se combiner avec le filtrage par distance) :
Réseaux de mesures
En général, pour chaque réseau de mesures deux points d'entrées sont exposés par le service et permettent de récupérer:
- la liste des stations de mesure sur le réseau,
- les observations (i.e. mesures) réalisées par les stations au cours du temps sur le réseau.
Par exemple, les données hydrométriques Hub'eau disposent de ces deux points d'entrée:
hubeau-hydro-stationspour les stations,hubeau-hydro-observationspour les observations.
Ces deux points d'entrée donnent accès aux deux collections stockant in-fine les données.
Stations avec filtrage spatial
Récupération de la liste des stations dans une zone donnée (i.e. boîte englobante):
HTTP - GETMesures avec filtrage spatial/temporel
Récupération des mesures brutes dans une plage de temps et une zone donnée (i.e. boîte englobante) avec les plus récentes en premier:
HTTP - GETVoir un exemple de résultat
{
"type": "FeatureCollection",
"features": [
{
"_id": "5f23ce6071b0b00008dff53f",
"type": "Feature",
"time": "2020-07-31T07:30:00.000Z",
"geometry": {
"type": "Point",
"coordinates": [
-0.12606156299146137,
45.02191991211479
]
},
"properties": {
"name": "L'Isle à Abzac",
"code_station": "#P726151001",
"H": 0.397
}
},
{
"_id": "5f23caea71b0b00008dfe457",
"type": "Feature",
"time": "2020-07-31T07:25:00.000Z",
"geometry": {
"type": "Point",
"coordinates": [
-0.12606156299146137,
45.02191991211479
]
},
"properties": {
"name": "L'Isle à Abzac",
"code_station": "#P726151001",
"H": 0.398
}
},
...
]
}Série temporelle sur une station
Récupération des mesures agrégées sur une station et une plage de temps données:
HTTP - GETVoir un exemple de résultat
{
"type": "FeatureCollection",
"features": [
{
"_id": {
"code_station": "#X331001001"
},
"time": {
"H": [
"2020-07-29T13:40:00.000Z",
"2020-07-29T13:45:00.000Z",
"2020-07-29T13:50:00.000Z",
...
],
"Q": [
"2020-07-29T13:40:00.000Z",
"2020-07-29T13:45:00.000Z",
"2020-07-29T13:50:00.000Z",
...
]
},
"type": "Feature",
"properties": {
"name": "La Durance à Cavaillon",
"code_station": "#X331001001",
"H": [
0.815,
0.815,
0.821,
...
],
"Q": [
36.87,
36.87,
37.458,
...
]
},
"geometry": {
"type": "Point",
"coordinates": [
5.032432216493836,
43.82748690979179
]
}
}
]
}Dernières mesures sur une station
Récupération des mesures les plus récentes sur une station par rapport à une horodate donnée:
HTTP - GETVoir un exemple de résultat
{
"type": "FeatureCollection",
"features": [
{
"_id": "64917e8ec06fb0000887fd3a",
"geometry": {
"coordinates": [
1.3351479476905552,
47.584957074484784
],
"type": "Point"
},
"properties": {
"H": -0.84,
"Q": 127,
"code_station": "#K447001001",
"name": "La Loire à Blois"
},
"time": {
"H": "2023-06-20T09:20:00.000Z",
"Q": "2023-06-20T09:20:00.000Z"
},
"type": "Feature"
}
]
}Le fonctionnement est similaire pour tous les points d'entrée:
- Téléray
https://api.planet._DOMAIN_/kano/teleray-sensors: accès à la localisation des sondeshttps://api.planet._DOMAIN_/kano/teleray-measures: accès au débit de dose gamma ambiant
- ICOS
https://api.planet._DOMAIN_/kano/icos-stations: accès à la localisation des stationshttps://api.planet._DOMAIN_/kano/icos-observations: accès à la concentration atmosphérique
- RTE
https://api.planet._DOMAIN_/kano/rte-units: accès à la localisation des unités de productionhttps://api.planet._DOMAIN_/kano/rte-generation: accès à la puissance injectée
- Hub'eau
https://api.planet._DOMAIN_/kano/hubeau-hydro-stations: accès à la localisation des sondeshttps://api.planet._DOMAIN_/kano/hubeau-hydro-observations: accès au niveau et débit d'eau
- Observations Radome
https://api.planet._DOMAIN_/kano/radome-stations: accès à la localisation des stationshttps://api.planet._DOMAIN_/kano/radome-observations: accès au paramètres météorologiques mesurés (vent, précipitations, température, ...)
- Observations Semence
https://api.planet._DOMAIN_/kano/semence-stations: accès à la localisation des stationshttps://api.planet._DOMAIN_/kano/semence-observations: accès au paramètres météorologiques mesurés (vent, précipitations, température, ...)
- Vigicrues
https://api.planet._DOMAIN_/kano/vigicrues-sections: accès aux tronçons (considérés comme des "stations")https://api.planet._DOMAIN_/kano/vigicrues-forecasts: accès au niveau de vigilance (considéré comme une "mesure" sur les tronçons)
Les réseaux suivants ne disposent que d'un seul point d'entrée (soit parce qu'il n'existe pas de stations fixes, soit parce que la géométrie associée aux stations varie au fil du temps), il convient donc de le traiter comme celui fournissant des mesures dans le fonctionnement présenté précedemment:
- OpenRadiation
https://api.planet._DOMAIN_/kano/openradiation: accès aux mesures
- Zones sous le vent
https://api.planet._DOMAIN_/kano/zsv: accès à la géométrie des zones
Prévisions météorologiques
Les capacités de requêtage et la structure des données transitant via l'API étant détaillés dans la documentation de Weacast, nous présentons ici des exemples de requêtes types.
Pour chaque modèle un point d'entrée différent est exposé par le service pour chaque élément météorologique selon la nomenclature suivante: https://api.planet._DOMAIN_/kano/modele/element.
Les modèles disponibles sont les suivants :
gfs-worldmodèle GFS (couverture mondiale),arpege-worldmodèle ARPEGE (couverture mondiale),arpege-europemodèle ARPEGE (couverture europe),arome-francemodèle AROME (couverture france),
Les éléments disponibles sont les suivants :
u-windcomposante horizontale du vent à 10m en m/s,u-windcomposante verticale du vent à 10m en m/s,gustrafales à 2m en m/s,temperaturetempérature à 2m en °C,precipitations: précipitations cumulées au sol sur 3h en mm/h.
Récupération des prévisions disponibles sur un élément météorologique:
HTTP - GETRécupération des données brutes de la prévision la plus proche d'un temps donné sur un élément météorologique :
HTTP - GETVoir un exemple de résultat
[
{
"_id": "5f244266503264000760e8cc",
"data": [
0.75,
0.76,
0.75,
...
]
}
]Rééchantillonnage des données de prévisions la plus proche d'un temps donné sur un élément météorologique et selon une grille donnée:
HTTP - GETVoir un exemple de résultat
Résultat similaire à la récupération des données brutes (voir ci-dessus).
Sonde virtuelle pour obtenir la valeur des différents éléments météorologique d'un modèle à un endroit précis pour un temps de prévision donné:
HTTP - POSTCorps de requête:
{
"type": "FeatureCollection",
"forecast": "gfs-world",
"elements": [
"u-wind",
"v-wind",
"gust",
"precipitations",
"temperature"
],
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
144, // longitude
-5 // latitude
]
}
}
]
}Exemple de requête complète via curl:
curl --location --request POST 'https://api.planet._DOMAIN_/kano/probes?forecastTime=2020-08-25T15:00:00.000Z&jwt=_TOKEN_' \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "FeatureCollection",
"forecast": "gfs-world",
"elements": ["u-wind", "v-wind", "gust", "precipitations", "temperature"],
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
144,
-5
]
}
}
]
}'Voir un exemple de résultat
{
"forecast": "gfs-world",
"elements": [
"u-wind",
"v-wind",
"gust",
"precipitations",
"temperature"
],
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"u-wind": 0.09015593469751969,
"v-wind": 0.3240957476654408,
"windSpeed": 0.33640176309883474,
"windDirection": 195.54533614476094,
"gust": 1.2910775125678953,
"precipitations": 0,
"temperature": 12.1190555304198
},
"geometry": {
"type": "Point",
"coordinates": [
144,
-5
]
},
"forecastTime": "2020-08-25T15:00:00.000Z",
"runTime": "2020-08-25T06:00:00.000Z"
}
]
}La requête peut également cibler une plage de temps, dans ce cas il est nécessaire de requêter les données en mode tuilé et de spécifier un opérateur géospatial pour ne cibler que les tuiles utiles à la position donnée.
Sonde virtuelle pour obtenir une série temporelle des différents éléments météorologique d'un modèle de prévision à un endroit précis:
HTTP - POSTExemple de requête complète via curl:
curl --location --request POST "https://api.planet._DOMAIN_/kano/probes?forecastTime[%24gte]=2020-08-25T15:00:00.000Z&forecastTime[%24lte]=2020-08-26T15:00:00.000Z&geometry[%24geoIntersects][%24geometry][type]=Point&geometry[%24geoIntersects][%24geometry][coordinates][]=144&geometry[%24geoIntersects][%24geometry][coordinates][]=-5&jwt=_TOKEN_" \
--header 'Content-Type: application/json' \
--data-raw '{
"forecast": "gfs-world",
"elements": ["u-wind", "v-wind", "gust", "precipitations", "temperature"]
}'Voir un exemple de résultat
{
"forecast": "gfs-world",
"elements": [
"u-wind",
"v-wind",
"gust",
"precipitations",
"temperature"
],
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"u-wind": [
-1.8405222188626973,
0.898255421022245,
2.522106150100827,
...
],
"v-wind": [
-0.21596040469943223,
-0.23335731045001024,
0.5032832630028146,
...
],
"windSpeed": [
1.8531489240007692,
0.928072430221,
2.5718307633270068,
...
],
"windDirection": [
83.30771555723719,
284.562917569009,
258.71492707605455,
...
],
"gust": [
5.140581665028293,
1.8914130131458202,
3.5863549574491955,
...
],
"precipitations": [
0.006506147071023607,
0.0032530735355118033,
0,
...
],
"temperature": [
29.3663427263156,
29.445523744579937,
28.389477190184678,
...
]
},
"geometry": {
"type": "Point",
"coordinates": [
15.952148437500002,
41.73852846935917
]
},
"forecastTime": {
"u-wind": [
"2020-07-31T15:00:00.000Z",
"2020-07-31T18:00:00.000Z",
"2020-07-31T21:00:00.000Z",
...
],
"v-wind": [
"2020-07-31T15:00:00.000Z",
"2020-07-31T18:00:00.000Z",
"2020-07-31T21:00:00.000Z",
...
],
"windSpeed": [
"2020-07-31T15:00:00.000Z",
"2020-07-31T18:00:00.000Z",
"2020-07-31T21:00:00.000Z",
...
],
"windDirection": [
"2020-07-31T15:00:00.000Z",
"2020-07-31T18:00:00.000Z",
"2020-07-31T21:00:00.000Z",
...
],
"gust": [
"2020-07-31T15:00:00.000Z",
"2020-07-31T18:00:00.000Z",
"2020-07-31T21:00:00.000Z",
...
],
"precipitations": [
"2020-07-31T15:00:00.000Z",
"2020-07-31T18:00:00.000Z",
"2020-07-31T21:00:00.000Z",
...
],
"temperature": [
"2020-07-31T15:00:00.000Z",
"2020-07-31T18:00:00.000Z",
"2020-07-31T21:00:00.000Z",
...
]
},
"runTime": {
"u-wind": [
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
...
],
"v-wind": [
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
...
],
"gust": [
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
...
],
"precipitations": [
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
...
],
"temperature": [
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
"2020-07-31T06:00:00.000Z",
...
]
}
}
]
}Note
Des éléments dérivés sont automatiquement calculés à partir des composantes du vent pour simplifier l'interprétation des données:
windSpeedvitesse du vent à 10m en m/s,windDirectiondirection du vent à 10m en °.
