Google Earth Engine (GEE) als Public Domain für große Geodaten

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



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







Raster-API-Tutorial







Vektorebenen







Verwendung von GDAL / OGR für die Datenverarbeitung und -analyse







Rasterebenen







Behandlung von Rasterdatensätzen (gerastert)







VON GEE ZU NUMPY ZU GEOTIFF







So laden Sie GeoJSON-Dateien in BigQuery GIS








All Articles