L’utilisation des APIs GDH requiert l’accès à un terminal Shell (comme MobaXterm, Ubuntu for Windows, Git bash…) et l’outil en ligne de commande cUrl.
Optionnel :
- Si vous utilisez les services de téléchargement, exporter une variable d’environnement APIKEY avec la clé d’API.
export APIKEY= »sSDFSGcxvjqRSDGFDDFGDFGDFGWSDFFSDGDFG »
- 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 GDH expose plusieurs points de contact :
- /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 GDH permettent d’utiliser les mots clés suivants :
Mot clé | Utilité | String | Nombre |
---|---|---|---|
eq | Chercher une valeur exacte | « attribut »:{« eq » : « valeur »} | « attribut »:{« eq » : valeur} |
in | Chercher plusieurs valeurs | « attribut »: {« in »: [« valeur1″, »valeur2 »]} | « attribut »: {« in »: [valeur1, valeur2]} |
contains | Contient une valeur | « attribut »:{« contains » : « valeur »} | « attribut »:{« contains » : valeur} |
lte | Cherche des valeurs inférieures ou égales à | « attribut »:{« lte » : valeur1} | |
gte | Cherche des valeurs supérieures ou égales à | « attribut »:{« lte » : valeur1} |
1.1 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 requêtables sont présentés ci-dessous :
Attribut | Type | Description | Valeurs possibles ou exemple ou pattern |
---|---|---|---|
dataType | String | Référence de la collection | « PEPS_S1_L1 » pour Sentinel-1 niveau 1 |
title | String | Titre de la collection | PEPS Sentinel-1 Level1 |
keywords | String | Mots clés associés à la collection | [« s1″, »sentinel-1″, »l1″, »sar », »grd », »slc »] |
instruments | String | Capteur | C-SAR |
processing:level | String | Niveau de produit | LEVEL1 |
temporal_resolution_hour | String | Résolution temporelle en jours | 144 |
gsd | String | Résolution spatiale le plus fine, en mètres | 5m |
mission | String | Nom de la mission | sentinel-1, sentinel-2, etc… |
projects | String | Projets chapeau | spécifique Postel (cyclopes, polder, …) |
total_items | Number | nombre de produits dans cette collection | 10 |
extent.temporal.interval | Interval de dates | Intervalle temporel des produits de la collection | [[« 2023-02-09T00:39:19.039Z », »2023-05-16T22:11:16.318Z »]] » |
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.2 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 | Type | Description | Valeurs possibles ou exemple ou pattern |
---|---|---|---|
dataType | String | Collection d’appartenance | « PEPS_S2_L1C », « PEPS_S2_L2A » |
accessService:endpointURL | String | URL s3 du produit | « S2A_MSIL1C_20230303T071811_N0509_R006_T39UYU_20230303T080614 » |
temporal:startDate | Date | début d’acquisition | « aaaa-mm-jjThh:mm:ss.000Z » |
temporal:endDate | Date | fin d’acquisition | « aaaa-mm-jjThh:mm:ss.000Z » |
spaceborne:satelliteSensor | String | type de capteur satellitaire | « SAR-C SAR » , »MSI » |
spaceborne:satellitePlatform | String | type de plateforme satellitaire | « S1A », « S1B », S2A », « S2B » |
spaceborne:sensorMode | String | mode du capteur | « IW », « EW », « SM », « WV », « INS-NOBS », « INS-RAW », « INS-VIC » |
spaceborne:cycleId | Number | cycle | 321 |
spaceborne:orbitID | Number | id de l’orbit relatif | entre 1 et 175 |
spaceborne:absoluteOrbitID | Number | id de l’orbite absolu | 46971 |
spaceborne:productType | String | type du produit | « SLC », « GRD », OCN », « S2MSI1C », « S2MSI2A » |
spaceborne:swath | String | swath du produit | « IW », « IW1 IW2 IW3, « EW », « EW1 EW2 EW3 EW4 EW5 », « WV1 WV2 », |
spaceborne:tile | String | tuile du produit | par exemple « T31TCG », liste des tuiles disponibles sur le site de l’ESA |
spaceborne:cloudCover | Number | couverture nuageuse | entre 0 et 100 avec des décimales possibles exemple 96.2 |
spaceborne:continentId | String | deux première lettres du continent | « AF » (Afrique) , »NA » (Amerique du Nord) , »OC » (Océanie), »AN » (Antartique) , »AS » (Asie) , »EU » (Europe) , « SA » (Amerique du Sud) |
- Produits de type Sentinel-1
Attribut | Type | Description | Valeurs possibles ou exemple ou pattern |
---|---|---|---|
dataType | String | Collection d’appartenance | « PEPS_S1_L1 », « PEPS_S1_L2 » |
accessService:endpointURL | String | URL s3 du produit | « S2A_MSIL1C_20230303T071811_N0509_R006_T39UYU_20230303T080614 » |
temporal:startDate | Date | début d’acquisition | « aaaa-mm-jjThh:mm:ss.000Z » |
temporal:endDate | Date | fin d’acquisition | « aaaa-mm-jjThh:mm:ss.000Z » |
spaceborne:satelliteSensor | String | type de capteur satellitaire | « SAR-C SAR », « MSI » |
spaceborne:satellitePlatform | String | type de plateforme satellitaire | « S1A », « S1B », S2A », « S2B » |
spaceborne:sensorMode | String | mode du capteur | « IW », « EW », « SM », « WV », « INS-NOBS », « INS-RAW », « INS-VIC » |
spaceborne:cycleId | Number | cycle | 321 |
spaceborne:orbitID | Number | id de l’orbit relatif | entre 1 et 175 |
spaceborne:absoluteOrbitID | Number | id de l’orbite absolu | 46971 |
spaceborne:productType | String | type du produit | « SLC », « GRD », OCN », « S2MSI1C », « S2MSI2A » |
spaceborne:swath | String | swath du produit | « IW », « IW1 IW2 IW3, « EW », « EW1 EW2 EW3 EW4 EW5 », « WV1 WV2 », |
spaceborne:tile | String | tuile du produit | par exemple « T31TCG », liste des tuiles disponibles sur le site de l’ESA |
spaceborne:cloudCover | Number | couverture nuageuse | entre 0 et 100 avec des décimales possibles exemple 96.2 |
spaceborne:continentId | String | deux 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:area | Number | ||
sat:relative_orbit | Number | Orbite relative | 50 |
sat:absolute_orbit | Number | Orbite absolue | 30972 |
sat:orbit_state | String | Direction de l’orbite | « Descending » ou « Ascending » |
sar:polarizations | String | Polarisations | « HH », « VV », « DH », « DV » |
product:type | String | Type de produit | « SLC » ou « GRD » pour dataType « PEPS_S1_L1 » « OCN » pour dataType « PEPS_S1_L2 » |
sar:instrument_mode | String | Mode d’acquisition | « IW », « EW », « SM », « EW » |
resolution_mode | String | Mode de résolution | Full, High, Medium, Low, Reduced |
product:timeliness | String | Délai de production | « Fast24h » |
continent_code | String | code continent | AF, NA, OC, AN, AS, EU, SA, SS |
datetime | Date | Date 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": {"dataType": {"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": {"accessService:endpointURL":{"contains":"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": {"dataType": {"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 GDH 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":{"dataType":{"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 GDH 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.3 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.4 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 GDH 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.5 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 GDH 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.6 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«
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. Rechercher via l’API OPENSEARCH
L’API Opensearch de GDH expose plusieurs points de contact :
- /api/opensearch/datasets : Permet de rechercher des jeux de données
- /api/opensearch/entities : Permet de rechercher des produits
Contrairement à l’API STAC, les requêtes Opensearch sont des requêtes de type GET, avec des réponses par défaut au format JSON.
Actuellement une anomalie oblige le paramétrage d’une APIKey pour utiliser l’API Opensearch. Cette anomalie sera corrigée dans la prochaine version mais d’ici là, il faut rajouter votre clé API -H « X-API-Key: $APIKEY » dans les paramètres de l’url.
2.1 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 -X GET -H « X-API-Key: $APIKEY » « https://geodes-portal.cnes.fr/api/opensearch/datasets/search«
Cette requête remonte l’ensemble des jeux de données du catalogue. L’attribut « dataType » présent dans la réponse est l’identifiant unique de chaque collection.
2.1.1 Recherche sur dataType
Pour rechercher une collection identifiée par son « dataType » :
curl -k -X GET -H « X-API-Key: $APIKEY » « https://geodes-portal.cnes.fr/api/opensearch/datasets/search?collection=<dataTypeValue>«
avec <dataTypeValue> à remplacer par la valeur adéquate. ex: PEPS_S2_L1C
2.1.2 Recherche libre
Pour effectuer une recherche « full text » avec un mot clé, on utilise le paramètre q :
curl -k -X GET -H « X-API-Key: $APIKEY » « https://geodes-portal.cnes.fr/api/opensearch/datasets/search?q=ocn«
2.1.3 Autres critères de recherche
Le tableau suivant récapitule les critères utilisables pour la recherche de jeux de données :
Attribut | Type | Description | Valeurs possibles ou exemple ou pattern |
---|---|---|---|
sensor | String | Capteur embarqué | MSI, VSCC, etc.. |
platform | String | Satellite | Sentinel-1, Sentinel-2, Venus, etc… |
processingLevel | String | Niveau produits | l1c, l2a, etc .. |
2.2 Rechercher des produits
2.2.1 Rechercher les produits d’une collection
Il est possible de rechercher les produits du catalogue pour la collection « PEPS_S2_L1C » et leurs métadonnées avec une requête du type :
curl -k -X GET -H « X-API-Key: $APIKEY » « https://geodes-portal.cnes.fr/api/opensearch/entities/search?collection=PEPS_S2_L1C«
2.2.2 Recherche par emprise
Pour rechercher les produits contenus dans une emprise fournie :
curl -k -X GET -H « X-API-Key: $APIKEY » « https://geodes-portal.cnes.fr/api/opensearch/entities/search?collection=PEPS_S2_L1C&box=-40,-30,100,60«
2.2.3 Ajout d’un mot clé
curl -k -X GET -H « X-API-Key: $APIKEY » « https://geodes-portal.cnes.fr/api/opensearch/entities/search?q=Iceland&collection=PEPS_S2_L1C&box=-40,-30,100,60 »
2.2.4 Recherche géotemporelle
Pour rechercher les produits dans un intervalle de date et une emprise fournie :
curl -k -X GET -H « X-API-Key: $APIKEY » « https://geodes-portal.cnes.fr/api/opensearch/entities/search?startDate=2023-07-28T00:00:00.000Z&endDate=2023-08-05T00:00:00.000Z&box=-40,-30,100,60″
2.2.5 Recherche par date de catalogage
Pour rechercher les produits par date de catalogage, il faut utiliser cette requête :
curl -k -X GET -H « X-API-Key: $APIKEY » « https://geodes-portal.cnes.fr/api/opensearch/entities/search?date=2023-07-28T00:00:00.00Z«
Note importante : telle que décrite ici, la requêtte effectue une recherche sur le champ date entre la date donnée (28/07/2023) et maintenant. Le champ de la date de publication étant une valeur unique, il n’est pas possible en opensearch de spécifier un intervalle de recherche pour cette requête. Pour donner un intervalle de recherche sur la date de publication, nous recommandons d’utiliser une recherche STAC telle que donnée ici.
2.2.6 Limitation des résultats
Le paramètre de requête maxRecords peut être utilisé pour limiter les résultats retournés
2.2.7 Critères de recherche
Le tableau suivant récapitule les critères utilisables pour la recherche de produits :
Attribut | Type | Description | Valeurs possibles ou exemple ou pattern |
---|---|---|---|
collection | String | Collection d’appartenance | ex : PEPS_S2_L1C |
startDate | String | Date de début d’acquisition | ex : 2023-07-28T00:00:00.000Z |
endDate | String | Date de fin d’acquisition | ex : 2023-08-28T00:00:00.000Z |
orbitNumber | nombre entier | Orbite relative | ex : 50 |
orbitDirection | String | Direction de l’orbite | « Descending » ou « Ascending » |
cloudCover | Nombre | Couverture nuageuse | [0,30] |
tile | String | Tuile (Sentinel-2 ou Landsat) | ex : T01UGT |
productType | String | Type de produit | SLC, GRD ou OCN (Sentinel-1) |
sensorMode | String | Configuration capteur | IW, EW, SM ou WV (Sentinel-1) |
polarisation | String | Mode de polarisation | HH, VV, HH HV ou VV VH |
date | String | Date de publication (date de catalogage) | ex : 2023-07-28T00:00:00.000Z |
3. Générer une clé d’API
3.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 :
- Ouvrir votre navigateur internet
- Accéder au portail GEODES en utilisant le lien suivant : https://geodes-portal.cnes.fr
- 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« .
3.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.
3.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 « 3.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.
4. Télécharger un produit via l’API
4.1 Télécharger un produit
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 quicklook | grep files | 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 assets | 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