API et outils

API et outils

L’utilisation des APIs GEODES requiert l’accĂšs Ă  un terminal Shell (comme MobaXterm, Ubuntu for Windows, Git bash…) et l’outil en ligne de commande Curl.

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 GEODES expose plusieurs points de contact :

  • /api/stac : Permet d’accĂ©der Ă  la landing page stac
  • /api/stac/conformance : Permet d’accĂ©der Ă  la liste des conformitĂ©s
  • /api/stac/collections : Permet de rechercher des jeux de donnĂ©es
  • /api/stac/search: Permet de rechercher des produits
  • /api/stac/collections/paginate : Permet de rechercher la page des jeux de donnĂ©es
  • /api/stac/search/paginate: Permet de rechercher la page des produits
  • /api/stac/collections/#collectionId : Permet de rechercher une collection spĂ©cifique Ă  partir de son id
  • /api/stac/collections/#collectionId/items:  Permet de rechercher les items d’une une collection spĂ©cifique Ă  partir de son id
  • /api/stac/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 APIs de recherche GEODES permettent d’utiliser les mots clĂ©s suivants :

Mot cléUtilitéStringNombre
eqChercher une valeur exacte« attribut »:{« eq » : « valeur »}« attribut »:{« eq » : valeur}
inChercher plusieurs valeurs« attribut »: {« in »: [« valeur1″, »valeur2 »]}« attribut »: {« in »: [valeur1, valeur2]}
containsContient une valeur« attribut »:{« contains » : « valeur »}« attribut »:{« contains » : valeur}
lteCherche des valeurs inférieures ou égales à« attribut »:{« lte » : valeur1}
gteCherche des valeurs supérieures ou égales à« attribut »:{« lte » : valeur1}

1.1 Accéder à la landing page stac

Il est possible d’accĂ©der Ă  la landing page stac avec la requĂȘte suivante:

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

1.2 AccĂ©der Ă  la page des conformitĂ©s 

Il est possible d’accĂ©der Ă  la page de conformitĂ©s avec la requĂȘte suivante:

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

1.3 Rechercher des jeux de données

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

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

Les attributs de niveau collection requĂȘtables sont prĂ©sentĂ©s ci-dessous :

Attribut ancien nomAttribut nouveau nomTypeRechercheDescriptionValeurs possibles ou exemple ou pattern
dataTypedatasetStringouiRéférence de la collection« PEPS_S1_L1 » pour Sentinel-1 niveau 1
dcs.spatialResolutionInMetersgsdStringRésolution spatiale le plus fine, en mÚtres5
dcs:platformplatformStringouiPlateformes d’acquisition des donnĂ©essentinel-2, multisat
dcs:processingLevelprocessing:levelStringouiNiveau de produitLEVEL1
dcs:satelliteconstellationStringNom de la missionsentinel-1, sentinel-2, etc…
dcs:sensorinstrumentsStringCapteurC-SAR
dcs:temporalResolutionInHourstemporal_resolutionStringRésolution temporelle en jours144
extent.temporal.intervalInterval de datesIntervalle temporel des produits de la collection[[« 2023-02-09T00:39:19.039Z », »2023-05-16T22:11:16.318Z »]] »
itemstotal_itemsNumbernombre de produits dans cette collection10
keywordkeywordsStringouiMots clĂ©s associĂ©s Ă  la collection[« s1″, »sentinel-1″, »l1″, »sar », »grd », »slc »]
projectsmissionsStringProjets chapeauspĂ©cifique Postel (cyclopes, polder, …)
titleStringouiTitre de la collectionPEPS Sentinel-1 Level1

Pour savoir si un attribut est requĂȘtable, il faut vĂ©rifier dans le modĂšle s’il a l’attribut « indexed » Ă  true.

Ainsi par exemple, 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://gdh-portal-prod.cnes.fr/api/search/collections »

1.4 Rechercher des produits

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

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

La limite d’affichage est configurable avec une valeur maximale de 80. Au delĂ  de 80 Ă©lĂ©ments, paginez en jouant sur la valeur de page pour obtenir la suite.

Pour afficher le nombre d’Ă©lĂ©ment que la recherche avec les critĂšres choisis renvoie, utilisez la commande suivante : 

curl -s -k -H "Content-Type: application/json" -X POST -d '{"limit":2,"page":1,"query":{ <ATTRIBUTS RECHERCHES> }}' https://geodes-portal.cnes.fr/api/stac/search | sed 's/,/\n/g' | grep matched | sed 's/}}//g'

Les attributs requĂȘtables sont prĂ©sentĂ©s ci-dessous (certains sont prĂ©fixĂ©s, avec le sĂ©parateur ‘:’) :

  • Produits de type Sentinel-2
Attribut ancien nomAttribut nouveau nomTypeRechercheDescriptionValeurs possibles ou exemple ou pattern
dataTypedatasetStringouiCollection d’appartenance« PEPS_S2_L1C », « PEPS_S2_L2A »
providerIdidentifierStringId du produitpar exemple « S2A_MSIL1C_20230303T071811_N0509_R006_T39UYU_20230303T080614 » 
accessService:endpointURLendpoint_urlStringURL s3 du produitl’url contient aussi l’identifier du produit par exemple « S2A_MSIL1C_20230303T071811_N0509_R006_T39UYU_20230303T080614 »
temporal:startDatestart_datetimeDateouidĂ©but d’acquisition« aaaa-mm-jjThh:mm:ss.000Z »
temporal:endDateend_datetimeDateouifin d’acquisition« aaaa-mm-jjThh:mm:ss.000Z »
spaceborne:satelliteSensorinstrumentStringouitype de capteur satellitaire« MSI »
spaceborne:satellitePlatformplatformStringouitype de plateforme satellitaireS2A », « S2B »
spaceborne:sensorModesar:instrument_modeStringmode du capteur« INS-NOBS », « INS-RAW », « INS-VIC »
spaceborne:cycleIDsat:orbit_cycleNumberouicycle 321
spaceborne:orbitIDsat:relative_orbitNumberouiid de l’orbite relativeentre 1 et 143
spaceborne:absoluteOrbitIDsat:absolute_orbitNumberouiid de l’orbite absolue46971
spaceborne:productTypeproduct:typeStringouitype du produit« S2MSI1C », « S2MSI2A »
spaceborne:tilegrid:codeStringouituile du produitpar exemple « T31TCG », liste des tuiles disponibles sur le site de l’ESA
spaceborne:cloudCovereo:cloud_coverNumberouicouverture nuageuseentre 0 et 100 avec des décimales possibles exemple 96.2
spaceborne:continentIdcontinent_codeStringouideux premiĂšre lettres du continent Â«Â AF » (Afrique) , »NA » (Amerique du Nord) , »OC » (OcĂ©anie), »AN » (Antartique) , »AS » (Asie) , »EU » (Europe) , « SA » (Amerique du Sud)
spaceborne:areaareaNulbersuperficie au sol
  • Produits de type Sentinel-1
Attribut ancien nomAttribut nouveau nomTypeRechercheDescriptionValeurs possibles ou exemple ou pattern
dataTypedatasetStringCollection d’appartenance« PEPS_S1_L1 », « PEPS_S1_L2 »
providerIdidentifierStringId du produitpar exemple « S1A_IW_GRDH_1SDV_20241212T060834_20241212T060859_056955_06FF1C_F554 » 
accessService:endpointURLendpoint_urlStringURL s3 du produit
temporal:startDatestart_datetimeDateouidĂ©but d’acquisition« aaaa-mm-jjThh:mm:ss.000Z »
temporal:endDateend_datetimeDateouifin d’acquisition« aaaa-mm-jjThh:mm:ss.000Z »
spaceborne:satelliteSensorinstrumentStringouitype de capteur satellitaire« SAR-C SAR »
spaceborne:satellitePlatformplatformStringouitype de plateforme satellitaire« S1A », « S1B »
spaceborne:sensorModesar:instrument_modeStringouimode du capteur« IW », « EW », « SM », « WV »
spaceborne:cycleIDsat:orbit_cycleNumberouicycle 321
spaceborne:orbitIDsat:relative_orbitNumberouiid de l’orbite relativeentre 1 et 175
spaceborne:absoluteOrbitIDsat:absolute_orbitNumberouiid de l’orbite absolue46971
spaceborne:orbitDirectionsat:orbit_stateStringouiDirection de l’orbite« Descending » ou « Ascending »
spaceborne:productTypeproduct:typeStringouitype du produit« SLC » ou « GRD » pour dataType « PEPS_S1_L1 »
« OCN » pour dataType « PEPS_S1_L2 »
spaceborne:swath
spaceborne.subSwath
swath
sar:beam_ids
Stringswath du produit« IW », « IW1 IW2 IW3, « EW », « EW1 EW2 EW3 EW4 EW5 », « WV1 WV2 », 
spaceborne:continentIdcontinent_codeStringouideux premiĂšre lettres du continent Â«Â AF » (Afrique) , »NA » (Amerique du Nord) , »OC » (OcĂ©anie), »AN » (Antartique) , »AS » (Asie) , »EU » (Europe) , « SA » (Amerique du Sud)
spaceborne:polarizationsar:polarizationsStringouiPolarisations« HH », « VV », « DH », « DV »
spaceborne:resolutionresolutionStringMode de résolutionFull, High, Medium, Low, Reduced
spaceborne:productTimelinessproduct:timelinessStringouiDélai de production« Fast24h »
datedatetimeDateDate de publication (date à laquelle la donnée a été cataloguée)« aaaa-mm-jjThh:mm:ss.000Z »

Exemples

Ainsi par exemple, la requĂȘte suivante permet de 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/search"

La requĂȘte suivante permet de 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/search"

La requĂȘte suivante permet de 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": {"endpoint_url":{"contains":"S2A_MSIL1C_20230303T071811_N0509_R006_T39UYU_20230303T080614"}}' "https://geodes-portal.cnes.fr/api/stac/search"

ou bien 

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

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

Pour trier les rĂ©sultats par un certains critĂšre, il faut rajouter sortBy Ă  la commande de la maniĂšre 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/search

« 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.  

La requĂȘte suivante permet de 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/search"

Enfin, dans une logique de moissonnage, du catalogue GEODES par des catalogues externes, une requĂȘte par date de publication (date Ă  laquelle la donnĂ©e a Ă©tĂ© cataloguĂ©e) est utilisĂ©e. Il s’agit du paramĂštre datetime. En donnant un intervalle, on rĂ©cupĂšre toutes les donnĂ©es cataloguĂ©es dans la pĂ©riode.

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/search

On peut utiliser aussi les paginations, sort by… pour rĂ©cupĂ©rer plusieurs pages et moissonner.

Aujourd’hui, le catalogue GEODES est compatible avec le standard STAC 1.0.0-beta.1 mais certaines extensions et opĂ©rateurs du standard ne sont pas encore supportĂ©s (filter par exemple), ce qui doit Ă©voluer dans le futur.

De la mĂȘme maniĂšre toutes les requĂȘtes sont Ă©galement accessibles en get mais sans body soit la commande:

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/search« 

1.5 Rechercher une page d’une recherche de collections ou d’une recherche de produits

A la fin d’une recherche de collections ou de produits  il y a un attribut links qui permet d’accĂ©der Ă  la page courante , Ă  la page suivante (si existante) et Ă  la page precĂ©dente (si existante).

On peut alors accéder à une page spécifique avec la commande curl en GET (uniquement) :

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/search/paginate » pour les produits

ou 

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/collections/paginate » pour les collections

Par dĂ©faut la page recherchĂ©e est la premiĂšre. On peut accĂ©der Ă  d’autres pages en ajoute un paramĂštre page Ă  la requĂȘte soit la commande:

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/search/paginate?page=#pageNumber » pour les produits

ou 

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/collections/paginate?page=#pageNumber » pour les collections

L’attribut pageNumber doit ĂȘtre un entier qui rĂ©fĂ©rence une page existante.

Par exemple pour accĂ©der Ă  la deuxiĂšme page (si elle existe) d’une collection on peut lancer la requĂȘte:

 curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/search/paginate?page=2 » pour les produits

On peut Ă©galement rĂ©cupĂ©rer la page de notre requĂȘte avec la commande:

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/search »  | sed ‘s/{/\n/g’ | grep self | grep paginate | sed ‘s/,/\n/g’| grep href | sed ‘s/ »href »://g’ 
   pour les produits

ou 

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/collections » | sed ‘s/{/\n/g’ | grep self | grep paginate | sed ‘s/,/\n/g’| grep href | sed ‘s/ »href »://g’ 
   pour les collections

1.6 Rechercher une collection spĂ©cifique

Il est possible de rechercher une collection spĂ©cifique du catalogue et leurs mĂ©tadonnĂ©es avec la requĂȘte suivante:

curl -k -X GET « 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.

L’API GEODES de recherche renvoie un JSON contenant des informations sur les relations entre les objets (collections et items) sous forme de lien dans l’attribut links. Il est donc possible via un simple ensemble d’instructions Shell d’extraire les urls de recherche d’une collection  en utilisant la commande suivante :

<COMMANDE CURL sur l’url https://geodes-portal.cnes.fr/api/stac/search> | sed ‘s/,/\n/g’  | grep collections | grep -v URN | sed ‘s/{« href »://g’

ou

<COMMANDE CURL sur l’url https://geodes-portal.cnes.fr/api/stac/collections> | sed ‘s/,/\n/g’ | grep collections | grep -v URN | sed ‘s/{« href »://g’


Par exemple en lançant la commande suivante :

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/search » | sed ‘s/,/\n/g’ | grep collections | grep -v URN | sed ‘s/{« href »://g’


on peut obtenir ces résultats:

« https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1« 
« https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1« 


On peut alors lancer une requĂȘte:

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

1.7 Rechercher des items une collection spĂ©cifique

Il est possible de rechercher une collection spĂ©cifique du catalogue et leurs mĂ©tadonnĂ©es avec la requĂȘte suivante:

curl -k -X GET « 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.

L’API GEODES de recherche renvoie un JSON contenant des informations sur les relations entre les objets (collections et items) sous forme de lien dans l’attribut links. Il est donc possible via un simple ensemble d’instructions Shell d’extraire les urls de recherche d’une collection  en utilisant la commande suivante :

<COMMANDE CURL sur l’url https://geodes-portal.cnes.fr/api/stac/search> | sed ‘s/,/\n/g’  | grep collections | grep -v URN | sed ‘s/{« href »://g’

ou

<COMMANDE CURL sur l’url https://geodes-portal.cnes.fr/api/stac/collections> | sed ‘s/,/\n/g’ | grep collections | grep -v URN | sed ‘s/{« href »://g’


Par exemple en lançant la commande suivante :

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/search » | sed ‘s/,/\n/g’ | grep collections | grep -v URN | sed ‘s/{« href »://g’


on peut obtenir ces résultats:

« https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1« 
« https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1« 


On peut alors lancer une requĂȘte:

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

1.8 Rechercher un item spécifique

Il est possible de rechercher un item spĂ©cifique du catalogue et leurs mĂ©tadonnĂ©es avec la requĂȘte suivante:

curl -k -X GET 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:…


<COMMANDE CURL sur l’url https://geodes-portal.cnes.fr/api/stac/search> | sed ‘s/,/\n/g’ | grep collections | grep URN | sed ‘s/{« href »://g’

Par exemple :

Par exemple en lançant la commande suivante :

curl -k -X GET « https://geodes-portal.cnes.fr/api/stac/search » | sed ‘s/,/\n/g’ | grep collections | grep URN | sed ‘s/{« href »://g’

on peut obtenir ces résultats:

« https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1/items/URN:FEATURE:DATA:gdh:d0264bba-0719-35da-8d48-d65a72cfa58e:V1« 
« https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1/items/URN:FEATURE:DATA:gdh:50a00222-bcc0-3b8b-b49d-c0303bd4b3e0:V1« 

« https://geodes-portal.cnes.fr/api/stac/collections/PEPS_S1_L1/items/URN:FEATURE:DATA:gdh:159d546e-fa33-392d-bcd4-6219495943e0:V1« 


On peut alors lancer une requĂȘte sur un des produits par exemple:

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/quicklook/URN:FEATURE:DATA:gdh:b2140343-085f-33d4-b923-52d3ae9d9dd6:V1/files/ef869eed3ad7b5e0617261e6328408c5" --output S2B_MSIL1C_20230303T080809_N0509_R078_T37UGT_20230303T111244.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