API et outils

API et outils

L’utilisation avancĂ©e des APIs GEODES requiert Ă  minima l’accĂšs Ă  un terminal et Ă  l’outil en ligne de commande Curl.

L’outil Postman offre Ă©galement une IHM facilitant la dĂ©couverte du catalogue GEODES et de ses APIs.

Optionnel :

  • Il peut parfois ĂȘtre nĂ©cessaire de configurer un proxy en exportant la variable suivante : export https_proxy=<proxy>

1. Rechercher via l’API STAC

L’API STAC GEODES est accessible depuis la landing page : https://geodes-portal.cnes.fr/api/stac.

Elle expose les endpoints :

  • /collections : Permet de rechercher des jeux de donnĂ©es
  • /items: Permet de rechercher des produits
  • /collections/#collectionId : Permet de rechercher une collection spĂ©cifique Ă  partir de son id
  • /collections/#collectionId/items:  Permet de rechercher les items d’une une collection spĂ©cifique Ă  partir de son id
  • /collections/#collectionId/items/#itemId:  Permet de rechercher un item spĂ©cifique d’une une collection spĂ©cifique Ă  partir de l’id de la collection et de l’id de l’item.

Les opĂ©rateurs supportĂ©s par l’API STAC GEODES sont :

Mot cléUtilitéExemple
eqChercher une valeur exacte« sat:relative_orbit » : {« eq »:51}
neqChercher les valeurs différentes« platform »:{« neq »: »S1B »}
inChercher plusieurs valeurs« sar:polarizations »: {« in »: [« VV », »VV VH »]}
containsContient une valeur« mission »: {« contains »: »theia »}
lteCherche des valeurs inférieures ou égales à« eo:cloud_cover »:{« lte »:30}
gteCherche des valeurs supérieures ou égales à« start_datetime »:{« gte »: »2027-01-01T00:00:00Z »}

1.1 Rechercher des jeux de données

La liste des collections GEODES est accessible ici :https://geodes-portal.cnes.fr/api/stac/collections

Les métadonnées des collections GEODES sont présentées ci-dessous :

AttributTypeRechercheDescriptionValeurs possibles ou exemple ou pattern
titleStringouiTitre de la collection« PEPS Sentinel-1 Level1 »
descriptionStringouiDescription de la collection« Sentinel-1 Level-1 products are the baseline products […]  »
datasetStringouiRéférence de la collection« PEPS_S1_L1 »
gsdStringRésolution spatiale le plus fine, en mÚtres5
platformStringouiPlateformes d’acquisition des donnĂ©essentinel-2, multisat
processing:levelStringouiNiveau de produitLEVEL1
constellationStringNom de la missionsentinel-1, sentinel-2, etc…
instrumentsStringCapteurC-SAR
temporal_resolutionStringRésolution temporelle en jours144
total_itemsNumbernombre de produits dans cette collection10
keywordsStringouiMots clĂ©s associĂ©s Ă  la collection[« s1″, »sentinel-1″, »l1″, »sar », »grd », »slc »]
missionsStringProjets chapeauspĂ©cifique Postel (cyclopes, polder, …)
providersJSONFournisseurs de la collection
missionsStringouiProjet en charge de la collection

Il est possible de rechercher des jeux de donnĂ©es du catalogue et leurs mĂ©tadonnĂ©es avec une requĂȘte de type :

curl -k -H "Content-Type: application/json" -X POST -d '{"page":1, "query": { <ATTRIBUTS RECHERCHES> }}' "https://geodes-portal.cnes.fr/api/stac/collections"

Le nombre de collections correspondantes aux critĂšres de recherche est disponible dans l’attribut « matched » de la rĂ©ponse.

Exemples

La requĂȘte suivante permet de trouver une collection dont les mots-clĂ©s contiennent l’expression « grd » :

curl -k -H "Content-Type: application/json" -X POST -d '{"page":1, "query": {"keywords": {"contains":"grd"}}}' "https://geodes-portal.cnes.fr/api/stac/collections"

La requĂȘte peut ĂȘtre Ă©galement lancer avec un get  pour un rĂ©sultat rapide:

curl -k -X GET "https://geodes-portal.cnes.fr/api/stac/collections"X POST -d '{"page":1, "query": {"keywords": {"contains":"grd"}}}' "https://geodes-portal-prod.cnes.fr/api/search/collections"

1.2 Rechercher des produits

La liste des produits GEODES est accessible ici :https://geodes-portal.cnes.fr/api/stac/items

La liste des mĂ©tadonnĂ©es de produits offertes par l’API GEODES est accessible ici: https://geodes.cnes.fr/metadonnees-offertes-par-lapi-stac-de-geodes/



Il est possible de rechercher des produits du catalogue et leurs mĂ©tadonnĂ©es avec la requĂȘte suivante:

curl -s -k -H "Content-Type: application/json" -X POST -d '{sortBy: [{ direction: " <SENS> ", field: " <ATTRIBUT DE TRI> " }],"page":1,"query":{ <ATTRIBUTS RECHERCHES> }}' https://geodes-portal.cnes.fr/api/stac/items

Le nombre de produits correspondants aux critĂšres de recherche est disponible dans l’attribut « matched » de la rĂ©ponse.

La limite d’affichage est configurable avec une valeur maximale de 80. Au delĂ  de 80 Ă©lĂ©ments, il faut parcourir les pages de rĂ©ponses pour obtenir la suite.

Chaque requĂȘte retourne une liste de produits et leurs mĂ©tadonnĂ©es au format JSON.

Le filtre sortBy est optionnel et permet d’ordonner la rĂ©ponse selon les valeurs d’un attribut spĂ©cifiĂ© :

« direction » correspond au sens choisi pour le tri. Il y a 2 valeurs possibles : « asc » pour ascendant et « dsc » pour descendant. 

« field » correspond Ă  l’attribut choisi pour le tri. Il doit faire partie de la liste d’attribut donnĂ©e prĂ©cĂ©demment.  

Exemples

  • Trouver des produits de type S1A SLC dont la date de dĂ©but d’acquisition est entre le 20 Juin 2023 Ă  4h21m51s et le 28 Juin 2023 Ă   4h21m51s et dont la polarisation est VV et le mode de capteur est soit IW soit EW :

curl -k -H "Content-Type: application/json" -X POST -d '{"page":1,"query":{"start_datetime":{"lte":"2023-06-28T04:21:51.000Z","gte":"2023-06-20T04:21:51.000Z"},"sar:polarizations" : {"in": ["VV"]}, "platform": {"in": ["S1A"]},"product:type": {"in": ["SLC"]},"sar:instrument_mode": {"in": ["IW","EW"]}}}' "https://geodes-portal.cnes.fr/api/stac/items"

  • Trouver 10 produits SENTINEL2 L1C dont la couverture nuageuse est infĂ©rieure Ă  50% et dont l’emprise intersecte une bbox donnĂ©e :

curl -k -H "Content-Type: application/json" -X POST -d '{ "page":1,"limit":10, "bbox":[148,-30,153,-28], "query": {"dataset": {"in":["PEPS_S2_L1C"]}, "eo:cloud_cover": {"lte":50}}}' "https://geodes-portal.cnes.fr/api/stac/items"

  • Trouver le produit dont le nom est S2A_MSIL1C_20230303T071811_N0509_R006_T39UYU_20230303T080614:

curl -k -H "Content-Type: application/json" -X POST -d '{ "page":1,"limit":10, "bbox":[148,-30,153,-28], "query": {"identifier":{"contains":"S2A_MSIL1C_20230303T071811_N0509_R006_T39UYU_20230303T080614"}}' "https://geodes-portal.cnes.fr/api/stac/items"

  • Trouver 10 produits SENTINEL2 L1C dont la couverture nuageuse est infĂ©rieure Ă  10% et ordonnĂ© selon le taux de couverture nuageuse :
curl -k -H "Content-Type: application/json" -X POST -d '{ "page":1,"limit":10, sortBy: [{ direction: "asc", field: "eo:cloud_cover" }] ,"query": {"dataset": {"in":["PEPS_S2_L1C"]}, "eo:cloud_cover": {"lte":10}}}' "https://geodes-portal.cnes.fr/api/stac/items"
  • Trouver les produits SENTINEL2 L1C diffusĂ©s par GEODES en janvier 2022 (exemple de requĂȘte utile pour du moissonnage)
curl -k -H "Content-Type: application/json" -X POST -d '{"page":1,"query":{"dataset":{"in":["PEPS_S2_L1C"]}, "datetime":{"lte":"2022-01-31T23:59:59.999Z"}, "datetime":{"gte":"2022-01-01CT00:00:00.000Z"}}}' https://geodes-portal.cnes.fr/api/stac/items

1.3 DĂ©couvrir les mĂ©tadonnĂ©es d’une collection spĂ©cifique

La liste des mĂ©tadonnĂ©es d’une collection spĂ©cifique est accessible ici :https://geodes-portal.cnes.fr/api/stac/collections/#collectionId


CollectionId reprĂ©sente l’id d’une collection qui peut ĂȘtre rĂ©cupĂ©rer avec une requĂȘte sur les collections.

Exemple :

  • Trouver les mĂ©tadonnĂ©es de la collection « Sentinel-1 Level 1 » :

curl -k -X GET "https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1"

1.4 Rechercher des items une collection spĂ©cifique

La liste des produits d’une collection spĂ©cifique est accessible ici :https://geodes-portal.cnes.fr/api/stac/collections/#collectionId/items


CollectionId reprĂ©sente l’id d’une collection qui peut ĂȘtre rĂ©cupĂ©rer avec une requĂȘte sur les collections.

Exemple :

curl -k -X GET "https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1/items"

1.5 Rechercher un item spécifique

La liste des mĂ©tadonnĂ©es d’un produit spĂ©cifique est accessible ici :https://geodes-portal.cnes.fr/api/stac/collections/#collectionId/items/#itemId

itemId reprĂ©sente l’id d’un item, il est de la forme « URN:… »


Exemple :

  • Trouver les mĂ©tadonnĂ©es du produit « S1A_IW_SLC__1SDV_20230205T213855_20230205T213925_047106_05A6BD_61EA »:

curl -k -X GET "https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1/items/URN:FEATURE:DATA:gdh:d0264bba-0719-35da-8d48-d65a72cfa58e:V1"

2. GĂ©nĂ©rer une clĂ© d’API

2.1. S’authentifier sur le portail GEODES

Dans un premier temps, vous devez vous connecter au portail GEODES afin de gĂ©nĂ©rer une clĂ© d’API.

Voici les étapes à suivre :

  1. Ouvrir votre navigateur internet
  2. AccĂ©der au portail GEODES en utilisant le lien suivant :  https://geodes-portal.cnes.fr
  3. S’authentifier via le bouton Log In en haut Ă  droite :

Une fois redirigĂ© sur la page de connexion, veuillez saisir votre adresse e-mail, votre mot de passe, puis cliquer sur le bouton « Login » :

Si vous possĂ©dez dĂ©jĂ  un compte GEODES, passez directement Ă  l’Ă©tape « 3.3 GĂ©nĂ©rer une clĂ© d’API« .

2.2. CrĂ©er un compte

Afin de créer un compte, veuillez cliquer sur le bouton « Create account »,

Puis, renseignez les informations ci-dessous :

Attention, tous les champs sont obligatoires. Le mot de passe doit contenir au moins une majuscule, un chiffre et un caractĂšre spĂ©cial et atteindre une longueur d’au moins 8 caractĂšres.

Un email de vérification vous sera envoyé avec un lien de validation de compte. DÚs réception du mail, veuillez cliquer sur le lien afin de valider votre compte.

2.3. GĂ©nĂ©rer une clĂ© d’API

Veuillez cliquer sur votre nom en haut Ă  droite et choisir l’option « My information » :

Vous pouvez dĂ©sormais choisir de gĂ©nĂ©rer une clĂ© d’API en cliquant sur le bouton « Generate » :

Ensuite, la clĂ© d’API sera gĂ©nĂ©rĂ©e et apparaĂźtra dans l’IHM.

Vous pouvez alors le copier dans le presse papier en cliquant sur l’icĂŽne dĂ©diĂ©e.

Ensuite, vous devrez exporter une variable d’environnement APIKEY avec la clĂ© d’API gĂ©nĂ©rĂ©e Ă  l’Ă©tape « 2.3 GĂ©nĂ©rer une clĂ© d’API« .

Voici un exemple :

export APIKEY="sSDFSGcxvjqRSDGFDDFGDFGDFGWSDFFSDGDFG"

Pour modifier votre clĂ© d’API, cliquez sur l’icĂŽne de rĂ©gĂ©nĂ©ration. Votre clĂ© d’API sera rĂ©gĂ©nĂ©rĂ©e et remplacera l’ancienne clĂ© dans l’IHM.

3. TĂ©lĂ©charger un produit via l’API

Optionnel :

  • Si vous utilisez les services de tĂ©lĂ©chargement depuis un terminal, il peut ĂȘtre pratique d’exporter une variable d’environnement APIKEY avec la clĂ© d’API.

export APIKEY="Copier_ici_votre_clĂ©_API"

L’API GEODES de recherche renvoie un JSON contenant des informations sur les produits correspondant Ă  la recherche et notamment le lien de tĂ©lĂ©chargement des produits. Il est possible via un simple ensemble d’instructions Shell d’extraire le nom de l’archive du produit (contenant son identifiant) ainsi que son lien de tĂ©lĂ©chargement, en utilisant la commande suivante :

<COMMANDE CURL> | sed 's/,/\n/g' | grep zip | sed 's/assets\":{/\n/g' | grep href  | sed 's/{"href"://g'

Par exemple : 

curl -k -H "Content-Type: application/json" -X POST -d '{ "page":1,"limit":10, "query": {"dataType": {"in":["PEPS_S2_L1C"]}}}' "https://geodes-portal.cnes.fr/api/stac/search" | sed 's/,/\n/g' | grep zip | sed 's/assets\":{/\n/g' | grep href  | sed 's/{"href"://g'

Cela permet d’obtenir un rĂ©sultat sous la forme :

« archive1″: »lien1 »
« archive2″: »lien2 »
« archive3″: »lien3 »
« archive4″: »lien4 »
« archive5″: »lien5 »
« archive6″: »lien6 »
« archive7″: »lien7 »
« archive8″: »lien8 »
« archive9″: »lien9 »
« archive10″: »lien10 »

en prenant en compte le « limit »: 10 de la requĂȘte.

Il suffit ensuite pour tĂ©lĂ©charger le produit de rĂ©cupĂ©rer le lien dĂ©sirĂ© et de l’incorporer Ă  la requĂȘte de la forme suivante :

curl -vvv -k -L -H "X-API-Key: $APIKEY" -XGET "<LIEN TELECHARGEMENT>" --output <chemin vers fichier sortie>

Par exemple : 

curl -vvv -k -L -H "X-API-Key: $APIKEY" -XGET "https://geodes-portal.cnes.fr/api/download/URN:FEATURE:DATA:gdh:01202b44-2d76-36b8-9453-56bf907882bf:V1/files/6e5ffa91b66775844607711eae4e0483" --output SENTINEL2C_20250922-171411-673_L2A_T14SQE_C_V4-0.zip

Important : dans les scripts, bien penser Ă  Ă©chapper le caractĂšre ':' avec %3A  

4. Consulter la disponibilitĂ© d’un produit

Certains produits diffusĂ©s par GEODES sont stockĂ©s sur bande (Tier3) tandis que d’autres sont stockĂ©s sur disque (Tier2). Les APIs suivantes permettent de consulter le mode de stockage afin d’anticiper un tĂ©lĂ©chargement direct ou un tĂ©lĂ©chargement aprĂšs restauration sur disque.

4.1. DisponibilitĂ© d’un produit

L’endpoint pour connaitre disponibilitĂ© d’un produit est : /availability/{NOM_DU_PRODUIT}

Il s’agit d’une requĂȘte GET.

curl -XGET -k -H "Content-Type:application/json" -H "X-API-Key: $APIKEY" -H "Prefer:respond-async" "<URL_DU_PORTAIL>/availability/{NOM_DU_PRODUIT}"

un exemple de requĂȘte

curl -XGET -k -H "Content-Type:application/json" -H "X-API-Key: $APIKEY" -H "Prefer:respond-async" "https://geodes-portal.cnes.fr/availability/S2A_MSIL1C_20161106T094202_N0500_R036_T32NNM_20230926T184801"

4.2. DisponibilitĂ© d’une liste de produits

Pour connaĂźtre le mode de stockage d’une liste de produits, utiliser une requĂȘte POST sur l’endpoint : /availability avec un body pouvant prendre la forme suivante : 

{
    "product_ids": [
        "URN_DU_PRODUIT_1",
        "URN_DU_PRODUIT_2"
    ]
}

La requĂȘte retourne une rĂ©ponse sous la forme :

{
    "products": [{
        "id": URN_DU_PRODUIT,
        "files": [{
          CHECKSUM
          AVAILABLE
          EXPIRATION_DATE
        }]
    }]
}

Ci-dessous un exemple de requĂȘte 

curl -XPOST -k --data "@body.json" -H "Content-Type:application/json" -H "X-API-Key: $APIKEY" -H "Prefer:respond-async" "https://geodes-portal.cnes.fr/availability"

avec body.json :

{
    "product_ids": [
        "URN:FEATURE:DATA:gdh:d2101fa8-f135-3d12-bf1f-1a556a7d004e:V1",
        "URN:FEATURE:DATA:gdh:b10f6b56-2ced-3702-ac30-18084223a08d:V1"
    ]
}

La réponse retournée est de la forme suivante :

{
  "products": [
    {
      "id": "URN:FEATURE:DATA:gdh:b10f6b56-2ced-3702-ac30-18084223a08d:V1",
      "files": [
        {
          "checksum": "44cd7c9f00a9bfae6ffa7695be2d4a60",    //fichier du quicklook
          "available": true
        },
        {
          "checksum": "c30b12f15728216f20854d126bfd098f",    //le produit URN:FEATURE:DATA:gdh:b10f6b56-2ced-3702-ac30-18084223a08d:V1 est disponible au tĂ©lĂ©chargement
          "available": true,
          "expiration_date": "2025-03-21T09:39:31Z"
        }
      ]
    },
    {
      "id": "URN:FEATURE:DATA:gdh:d2101fa8-f135-3d12-bf1f-1a556a7d004e:V1",
      "files": [
        {
          "checksum": "2d363e1cd6ba42a5b67c52c36ca1b13f",   //fichier du quicklook
          "available": true
        },
        {
          "checksum": "491e775f56609aa38e7806dbfabc5499",   //le produit URN:FEATURE:DATA:gdh:d2101fa8-f135-3d12-bf1f-1a556a7d004e:V1 est stockĂ© sur le glacier Tier3
          "available": false
        }
      ]
    }
  ]
}

5. Pour les utilisateurs Python

PyGEODES est un outil de recherche et téléchargement des produits catalogués dans GEODES.

L’ensemble des informations pour installer et utiliser cet outil est disponible sur Github : pygeodes — pygeodes v0.1.0 Manual

Vous trouverez également dans cette documentation des exemples pour vous accompagner dans sa prise en main.

En cas de questions/remarques sur l’outil PyGEODES, merci de nous contacter via le formulaire de contact.

Rechercher