Skip to content

KFS

Kalisio Features Service ou KFS est un service web permettant d'interroger les objets géographiques (lignes, points, polygones...) des applications développées avec le Kalisio Development Kit telle que Kano par l'intermédiaire du standard OGC API Features (ou WFS v3) avec un encodage GeoJSON.

Un support limité du filtrage au format CQL est également supporté:

  • encodage JSON avec une requête de type POST (filtre = charge utile / géométrie au format GeoJson),
  • encodage TXT uniquement pour les opérateurs spatiaux et de nullité avec une requête de type GET (filtre = paramètre de requête / géométrie au format WTK).

Jeux de données accessibles

BDXéoEURDEPZones sous influenceVigicruesTelérayOpenRadiationICOSRTEHydrométrie Hub'EauRadomeSemenceZones sous le vent

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 une limite dans le nombre de résultats par défaut pour éviter une surcharge trop importante.

Le service KFS supporte différentes requêtes dont principalement :

GetCapabilities

Les opérations de type GetCapabilities permettent de consulter les caractéristiques du services.

HTTP - GET
  • Classes de conformité au standard:
https://api.planet._DOMAIN_/kfs/conformance?&jwt=_TOKEN_
  • Définition de l'API au standard OpenAPI:
https://api.planet._DOMAIN_/kfs/definition?&jwt=_TOKEN_
  • Liste des collections de données disponibles:
https://api.planet._DOMAIN_/kfs/collections?&jwt=_TOKEN_

GetFeatures

Les opérations de type GetFeatures permettent de récupérer les objets géographiques résultants d'une requête sur une collection de données. La collection peut être récupéré entièrement, i.e. sans filtrage, ou partiellement, i.e. avec filtrage sur certaines propriétés, spatial et/ou temporel. De nombreux exemples illustratifs sont fournis dans les sections suivantes selon le type de données mais voici un premier exemple sur le jeu des Zones sous influence

  • Zones sous influence, i.e. sans filtrage
HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/zi/items?jwt=_TOKEN_
Voir un exemple de résultat
json
{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "652d4057ed5106002470d9e3",
      "geometry": {
        "coordinates": [...],
        "type": "Polygon"
      },
      "properties": {
        "OBJECTID":"1",
        "Nom":"Saclay",
        "Type_":"CEA",
        "BUFF_DIST":"5000"
      },
      "type": "Feature"
    },
    ...
  ],
  "numberMatched": 56,
  "numberReturned": 56,
  "timeStamp": "2024-06-10T08:52:52.004Z",
  "links": [...]
}
  • Zones sous influence à 5 Kms (possible aussi pour 10 Kms), i.e. avec filtrage sur la propriété BUFF_DIST
HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/zi/items?BUFF_DIST='5000'&jwt=_TOKEN_

Attention

Si la propriété de filtrage est de type chaîne de caractères mais que la valeur de filtrage est convertible vers un nombre (e.g. 50) veuillez l'encapsuler entre simple quotes (e.g. '50') sinon elle sera automatiquement convertie vers une valeur numérique, ce qui peut faire échouer le filtrage.

  • De la 5ème à la 10ème zone sous influence
HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/zi/items?offset=5&limit=5&jwt=_TOKEN_
Voir un exemple de résultat
json
{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "64917e8ec06fb0000887fd3a",
      "geometry": {
        "coordinates": [...],
        "type": "Polygon"
      },
      "properties": {
        "OBJECTID":"4",
        "Nom":"Nogent",
        "Type_":"CNPE",
        "BUFF_DIST":"5000"
      },
      "type": "Feature"
    },
    ...
  ],
  "numberMatched": 56,
  "numberReturned": 5,
  "timeStamp": "2024-06-10T08:52:52.004Z",
  "links": [...]
}

Croisement spatial

Un support limité du filtrage au format CQL permet de réaliser un croisement spatial. Exemple de croisement sur une zone en Andorre avec les limites administratives OpenStreetMap de niveau 7:

HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/osm-boundaries/items?admin_level=7&filter-lang=cql-text&filter=INTERSECTS(geometry,POLYGON((1.48 42.50, 1.66 42.50, 1.66 42.60, 1.48 42.60, 1.48 42.50)))&jwt=_TOKEN_

HTTP - POST
https://api.planet._DOMAIN_/kfs/collections/osm-boundaries/items?admin_level=7&filter-lang=cql-json&jwt=_TOKEN_

Corps de requête:

json
{
  "intersects": [{ "property": "geometry" }, {
    "type": "Polygon",
    "coordinates": [
      [[1.48, 42.50], [1.66, 42.50], [1.66, 42.60], [1.48, 42.60], [1.48, 42.50]]
    ]}]
}

BDXéo

L'ensemble des tables BDXéo est exposé sous un identifiant de collection du type bdxeo-table (convention kebab case), quelques examples:

  • Sites
HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/bdxeo-site-centroid/items?jwt=_TOKEN_
  • Périmètres PPI
HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/bdxeo-ppi-perimeter/items?jwt=_TOKEN_

Collection avec filtrage sur les propriétés

  • Sites de type CNPE
HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/bdxeo-site-centroid/items?id_type=CNPE&jwt=_TOKEN_
  • Sites en France
HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/bdxeo-site-centroid/items?country_fr=France&jwt=_TOKEN_

Réseaux de mesures

En général, pour chaque réseau de mesures deux collections sont exposées 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 collections:

  • hubeau-hydro-stations pour les stations,
  • hubeau-hydro-observations pour les observations.

Le fonctionnement est similaire pour tous les points d'entrée:

  • Téléray
    • https://api.planet._DOMAIN_/kfs/collections/teleray-sensors: accès à la localisation des sondes
    • https://api.planet._DOMAIN_/kfs/collections/teleray-measures: accès au débit de dose gamma ambiant
  • SaveEcoBot
    • https://api.planet._DOMAIN_/kfs/collections/saveecobot-stations: accès à la localisation des sondes
    • https://api.planet._DOMAIN_/kfs/collections/saveecobot-measures: accès au débit de dose gamma ambiant
  • ICOS
    • https://api.planet._DOMAIN_/kfs/collections/icos-stations: accès à la localisation des stations
    • https://api.planet._DOMAIN_/kfs/collections/icos-observations: accès à la concentration atmosphérique
  • RTE
    • https://api.planet._DOMAIN_/kfs/collections/rte-units: accès à la localisation des unités de production
    • https://api.planet._DOMAIN_/kfs/collections/rte-generation: accès à la puissance injectée
  • Hub'eau
    • https://api.planet._DOMAIN_/kfs/collections/hubeau-hydro-stations: accès à la localisation des sondes
    • https://api.planet._DOMAIN_/kfs/collections/hubeau-hydro-observations: accès au niveau et débit d'eau
  • Observations Radome
    • https://api.planet._DOMAIN_/kfs/collections/radome-stations: accès à la localisation des stations
    • https://api.planet._DOMAIN_/kfs/collections/radome-observations: accès au paramètres météorologiques mesurés (vent, précipitations, température, ...)
  • Observations Semence
    • https://api.planet._DOMAIN_/kfs/collections/semence-stations: accès à la localisation des stations
    • https://api.planet._DOMAIN_/kfs/collections/semence-observations: accès au paramètres météorologiques mesurés (vent, précipitations, température, ...)
  • Vigicrues
    • https://api.planet._DOMAIN_/kfs/collections/vigicrues-sections: accès aux tronçons (considérés comme des "stations")
    • https://api.planet._DOMAIN_/kfs/collections/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_/kfs/collections/openradiation: accès aux mesures
  • Zones sous le vent
    • https://api.planet._DOMAIN_/kfs/collections/zsv: accès à la géométrie des zones

Mesures sans filtrage

HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/teleray-sensors/items?jwt=_TOKEN_

Mesures avec filtrage spatial

Récupération de la liste des stations Hub'Eau dans une zone donnée (i.e. boîte englobante):

HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/hubeau-hydro-stations/items?bbox=-0.17578125,44.96479793033104,-0.087890625,45.02695045318546&jwt=_TOKEN_

Mesures avec filtrage spatial/temporel

Récupération des mesures des stations Hub'Eau dans une plage de temps et une zone donnée (i.e. boîte englobante) avec les plus récentes en premier:

HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/hubeau-hydro-observations/items?bbox=-0.17578125,44.96479793033104,-0.087890625,45.02695045318546&datetime=start_time/end_time&sortby=-time&jwt=_TOKEN_
Voir un exemple de résultat
json
{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "6666c336ebe899d8b4f8789c",
      "geometry": {
        "type": "Point",
        "coordinates":
        [
            -0.12606156299146137,
            45.02191991211479
        ]
      },
      "properties": {
        "name": "L'Isle à Abzac",
        "code_station": "#P726151001",
        "H": 0.647
      },
      "type": "Feature"
    },
    ...
  ],
  "numberMatched": 1004,
  "numberReturned": 500,
  "timeStamp": "2024-06-10T08:52:52.004Z",
  "links": [...]
}

Dernières/Premières mesures sur une station

Récupération des mesures Hub'Eau les plus récentes sur une station par rapport à une horodate donnée:

HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/hubeau-hydro-observations/items?code_station=%23K447001001&datetime=../end_time&limit=1&sortby=-time&jwt=_TOKEN_
Voir un exemple de résultat
json
{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "6666c336ebe899d8b4f8789c",
      "geometry": {
        "type": "Point",
        "coordinates":
        [
            1.3351479476905552,
            47.584957074484784
        ]
      },
      "properties": {
        "name": "La Loire à Blois",
        "code_station": "#K447001001",
        "H": -0.816
      },
      "type": "Feature"
    }
  ],
  "numberMatched": 546,
  "numberReturned": 1,
  "timeStamp": "2024-06-10T08:52:52.004Z",
  "links": [...]
}

Récupération des mesures Hub'Eau les plus anciennes sur une station par rapport à une horodate donnée:

HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/hubeau-hydro-observations/items?code_station=%23K447001001&datetime=../end_time&limit=1&sortby=time&jwt=_TOKEN_

Attention

Si une station mesure différentes grandeurs il est nécessaire de créer une requête par grandeur à l'aide d'un filtre au format CQL.

Récupération des mesures Hub'Eau uniquement de débit les plus récentes sur une station par rapport à une horodate donnée:

HTTP - GET
https://api.planet._DOMAIN_/kfs/collections/hubeau-hydro-observations/items?code_station=%23K447001001&datetime=../end_time&limit=1&sortby=-time&filter-lang=cql-text&filter=Q IS NOT NULL&jwt=_TOKEN_