Skip to content
Snippets Groups Projects
Commit 83c0fc75 authored by elodie.fernandez_ird.fr's avatar elodie.fernandez_ird.fr
Browse files

Ajout notebook download PML

parent 32f594dd
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id:9553be14-27df-47fe-ab1e-0c5a663b1fe6 tags:
# Téléchargement de données depuis Google Earth Engine
%% Cell type:markdown id:eb20f9fc-70a4-4df1-8529-04d95c3928f6 tags:
Example avec les données PML_V2 (https://developers.google.com/earth-engine/datasets/catalog/CAS_IGSNRR_PML_V2_v017).
Basé sur un script de Alain Dezetter.
Les images sont téléchargées vers Google Drive car le téléchargement direct sur disque n'est possible que pour des volumes très faibles (32MB par requête maximum, grille de dimensions maximales 10000 - voir https://developers.google.com/earth-engine/apidocs/ee-image-getdownloadurl). Il faudra donc ensuite télécharger les données de Google Drive vers un disque local. Par défaut, un compte Google gratuit dispose de 15Go d'espace disque (partagé entre toutes les applications Google).
%% Cell type:code id:fbc2c925-eb5e-4747-9868-c36bdded0e9d tags:
``` python
import ee
import time
import requests
import geemap
import pathlib
import folium
```
%% Cell type:code id:f8494d56 tags:
``` python
# Authentification dans Google Earth Engine
# Nécessite d'avoir déjà un compte GEE (possible avec une adresse @ird / @umontpellier.fr / ...)
# La commande va ouvrir un navigateur internet pour la connection
# Suivre les instructions et copier le code d'identification ci dessous
ee.Authenticate()
```
%% Cell type:code id:989415af-e477-4d41-9be4-94f877446cfe tags:
``` python
# Initialisation de la librairie GEE
ee.Initialize()
```
%% Cell type:markdown id:8e817ab8-b03d-4222-bffe-5bb11d900132 tags:
## Exploration des données
%% Cell type:code id:d62c7cc9-584f-42d2-bbde-14818fe4f1ad tags:
``` python
# Régions d'intérêt
# xMin, yMin, xMax, yMax
roi = ee.Geometry.Rectangle(-19, 8, 17, 25) # Sahel
```
%% Cell type:code id:d957a32e-a00d-4ff4-a41c-d1b33496b273 tags:
``` python
# Vérification localisation de la roi
geom = roi.toGeoJSONString()
geo_j = folium.GeoJson(data=geom, style_function=lambda x: {'fillColor': 'blue'})
[lon, lat] = roi.centroid().getInfo()['coordinates']
m = folium.Map(location=[lat, lon], zoom_start=4)
geo_j.add_to(m)
m
```
%% Cell type:code id:86512d4f-b336-4945-87bd-fb9f4527b72e tags:
``` python
# Sélection de données pour une date aléatoire, sur la zone d'intérêt et un paramètre uniquement
# pour voir le contenu d'une image GEE
image_test = ee.Image("CAS/IGSNRR/PML/V2_v017/2003-01-01").clip(roi).select(['ET_water'])
```
%% Cell type:code id:d3fb4896-d32b-4d0a-aec6-055cd3309465 tags:
``` python
# Informations sur l'image
image_test.getInfo()
```
%% Cell type:code id:91780f31-cc41-4e9f-b54b-df7e35d2c8e3 tags:
``` python
# Informations sur la projection
# Nécessaire pour l'exportation
projection = image_test.projection().getInfo()
projection
```
%% Cell type:code id:fb9bd956-71d1-4f17-94fe-9819a2bd417d tags:
``` python
# Plot rapide de la donnée et de la roi
Map = geemap.Map()
Map.addLayer(image_test, {}, 'Test image')
Map.addLayer(roi, {}, "Region of interest")
Map
```
%% Cell type:markdown id:8e6c00e7 tags:
## Téléchargement des images vers Google Drive
%% Cell type:code id:16bea35c-b05b-480e-a4f4-bc59415fd96d tags:
``` python
# Sélection de toutes les images PML V2
PmlV2_all = ee.ImageCollection("CAS/IGSNRR/PML/V2_v017")
```
%% Cell type:code id:c8231ba7-d8c6-4e4b-bda6-e225ff3a842a tags:
``` python
# Création d'une liste qui contient les métadonnées de toutes les images de la collection
# nb_max est un paramètre obligatoire. C'est le nombre maximum d'images dans la collection
nb_max = 1000
collection_info = PmlV2_all.toList(nb_max).getInfo()
```
%% Cell type:code id:d458ba8e-2967-41dc-bc5b-075ee7ab6fab tags:
``` python
# Nombre d'images dans la sélection
len(collection_info)
```
%% Cell type:code id:6dcb6328-3c29-42d2-a95c-9ddd66547470 tags:
``` python
# Date de la première et dernière images de la collection
print(collection_info[0]['id'])
print(collection_info[-1]['id'])
```
%% Cell type:markdown id:2da7d1b5 tags:
Téléchargement image par image, au format GeoTIFF.
Le répertoire de téléchargement (argument folder dans la tâche ci-dessous) est créé automatiquement s'il n'existe pas déjà dans le google drive associé au compte utilisé pour l'authentification GEE.
%% Cell type:code id:102660f3-3d14-45a1-87c9-3548874ee318 tags:
``` python
# Pour chaque image de la collection
for image in collection_info:
# Sélection de la région d'intérêt uniquement pour tous les paramètres
extract = ee.Image(image['id']).clip(roi).select(['GPP','Ec','Es','Ei','ET_water'])
# Nom des images en sortie
date = image['id'].split('/')[4]
prefix = '_'.join([date, 'epsg4326', 'V2', 'v017'])
print(f"Uploading image {image['id']} to {prefix}")
# Creation de la tâche de téléchargement
task = ee.batch.Export.image.toDrive(image = extract,
folder = 'PmlV2_v017_occitanie_cog',
fileNamePrefix = prefix,
crs = projection['crs'],
crsTransform = projection['transform'],
region = roi,
maxPixels = 1e13,
fileFormat = 'GeoTIFF',
)
# Lancement de la tâche
task.start()
# Monitoring de la tâche (message toutes les 2 minutes)
while task.active():
time.sleep(120)
print("still uploading ...")
print("done uploading this image")
```
%% Cell type:code id:7936d909-21dc-47ea-b31c-eb61fc6ad3bb tags:
``` python
# Vérification du status de la dernière tâche
task.status()
```
%% Cell type:code id:a82a8eb9-e9c5-4e9d-95ec-23957173a890 tags:
``` python
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment