Dans le dernier article, Google Earth Engine (GEE) en tant que supercalculateur public, il s'agissait de travailler dans l'éditeur de cloud GEE, où vous n'avez besoin que de Google Mail pour y accéder. Si les besoins sont limités à des tâches ponctuelles et à des gigaoctets de données récupérables, cela suffit amplement. Mais pour l'automatisation de nombreuses tâches, même petites, un éditeur cloud n'est pas la meilleure façon de travailler, et encore plus lorsque vous avez besoin de recevoir à plusieurs reprises des rasters d'une taille totale de téraoctets. Dans de tels cas, d'autres outils seront nécessaires et nous examinerons aujourd'hui les possibilités d'accès depuis le shell de la console et les scripts Python et le notebook Python Jupyter.
Dans la capture d'écran d'un ordinateur portable Python Jupyter, où un raster avec des données de densité de population pour 2020 du catalogue de données Earth Engine: WorldPop Global Project Population Data est affiché sur un OpenStreetMap
introduction
, . , Google Earth Engine (GEE), , . , . , GEE , . , , , (, ). , (ML) , ! , — GEE, Compute Engine . , , .
Google Cloud SDK google-cloud-sdk. ( ) . :
$ gcloud auth list
Credentialed accounts:
- youremail@gmail.com (active)
To set the active account, run
$ gcloud config set account <account>
:
$ gcloud config set account <account>
:
$ gcloud auth login
buckets Google Drive, GEE GEE. , API .
C GEE buckets Export.table.toCloudStorage Export.image.toCloudStorage , Google Compute Engine. gsutil, :
$ gsutil du -h gs://gcp-pdp-osm-dev-earth-engine
(. -h). gsutil , (cp, rm,...), .
GEE Google Drive Export.table.toDrive Export.image.toDrive, - . Google Drive .
GEE API
Google Earth Engine (GEE) my-service-account@...iam.gserviceaccount.com: Create and register a service account to use Earth Engine. GEE KEYS JSON , Register a new service account. Python :
import ee
service_account = 'my-service-account@...iam.gserviceaccount.com'
credentials = ee.ServiceAccountCredentials(service_account, 'privatekey.json')
ee.Initialize(credentials)
Python API ee.Authenticate() .
$ earthengine earthengine --ee_config
, Python GDAL:
import os
from osgeo import gdal
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "my-service-account.json"
GDAL:
export GOOGLE_APPLICATION_CREDENTIALS=my-service-account.json
GEE
API Method: projects.assets.getPixels , 32MB. , GDAL API, .
GDAL Python. WorldPop/GP/100m/pop 2020 . , :
export GOOGLE_APPLICATION_CREDENTIALS=my-service-account.json # fetch collection ogrinfo -ro -al "EEDA:" -oo COLLECTION=projects/earthengine-public/assets/WorldPop/GP/100m/pop -where "year=2020" # show one raster info gdalinfo "EEDAI:projects/earthengine-public/assets/WorldPop/GP/100m/pop/ZWE_2020" # fetch one raster to local drive gdal_translate "EEDAI:projects/earthengine-public/assets/WorldPop/GP/100m/pop/ZWE_2020" ZWE_2020.tif
Python:
import os
from osgeo import ogr, gdal
# define service account key
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "my-service-account.json"
# fetch collection
driver = ogr.GetDriverByName('EEDA')
ds = driver.Open('EEDA:projects/earthengine-public/assets/WorldPop/GP/100m/pop')
layer = ds.GetLayer()
# filter collection by attribute
layer.SetAttributeFilter('year=2020')
# select 1st raster
for feature in layer:
name = feature.GetField("name")
crs = feature.GetField("band_crs")
print ('raster name and crs:',name, crs)
break
# fetch 1st raster from the collection to array
ds = gdal.Open(f'EEDAI:{name}')
band = ds.GetRasterBand(1)
array = band.ReadAsArray()
print ('raster shape:', array.shape)
«» Google Earth Engine. GEE , Python Jupyter , . , «» — GEE. , GDAL .
Je serais intéressé de recevoir des commentaires des lecteurs: vaut-il la peine d'aborder des sujets plus complexes, ou est-ce déjà au-delà de ce qui intéresse le public russophone? Je sais que beaucoup de lecteurs ici utilisent Google Transtale et des traducteurs similaires, peut-être devriez-vous immédiatement écrire en anglais sur LinkedIn, comme je le fais déjà avec des publications sur la géophysique.
Liens
EEDAI - Image de l'API de données Google Earth Engine
Utilisation de GDAL / OGR pour le traitement et l'analyse des données
Gestion des jeux de données raster (quadrillés)
Comment charger des fichiers GeoJSON dans BigQuery GIS