Im letzten Artikel, Google Earth Engine (GEE) als öffentlicher Supercomputer, ging es darum, im Cloud-Editor GEE zu arbeiten, wo Sie nur Google Mail für den Zugriff benötigen. Wenn sich die Anforderungen auf einmalige Aufgaben und Gigabyte wiederherstellbarer Daten beschränken, reicht dies völlig aus. Für die Automatisierung vieler kleiner Aufgaben ist ein Cloud-Editor jedoch nicht die beste Arbeitsweise, und dies umso mehr, wenn Sie wiederholt Raster mit einer Gesamtgröße von Terabyte empfangen müssen. In solchen Fällen werden andere Tools benötigt, und heute werden wir die Zugriffsmöglichkeiten über die Konsolen-Shell und Python-Skripte sowie das Python Jupyter-Notizbuch untersuchen.
Auf dem Screenshot eines Python Jupyter-Laptops wird auf einer OpenStreetMap ein Raster mit Bevölkerungsdichtedaten für 2020 aus dem Earth Engine-Datenkatalog: WorldPop Global Project-Bevölkerungsdaten angezeigt
Einführung
, . , 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 .
Ich würde mich über Feedback von Lesern freuen: Lohnt es sich, komplexere Themen anzusprechen, oder liegt dies bereits außerhalb des Bereichs, der das russischsprachige Publikum interessiert? Ich weiß, dass viele Leser hier Google Transtale und ähnliche Übersetzer verwenden. Vielleicht sollten Sie sofort auf Englisch auf LinkedIn schreiben, wie ich es bereits bei Veröffentlichungen zur Geophysik tue.
Links
EEDAI - Google Earth Engine-Daten-API-Image
Verwendung von GDAL / OGR für die Datenverarbeitung und -analyse
Behandlung von Rasterdatensätzen (gerastert)
So laden Sie GeoJSON-Dateien in BigQuery GIS