Earth Engine REST API ile tablo hesaplamaları

Not: REST API, tüm kullanıcılar için uygun olmayabilecek yeni ve gelişmiş özellikler içerir. Earth Engine'i ilk kez kullanıyorsanız lütfen JavaScript kılavuzu ile başlayın.

Earth Engine REST API hızlı başlangıç kılavuzunda, Earth Engine öğesindeki piksel bloklarına nasıl erişileceği gösterilmektedir. Hesaplama pikselleri örneği, sonucu almadan önce piksellere nasıl hesaplama uygulanacağını gösterir. Bu örnek, FeatureCollection öğesinin her özelliğindeki ImageCollection öğesinin her resmindeki piksellerin ortalamasını almayı gösterir. Bu, computeFeatures uç noktasına gönderilen bir POST isteğidir.

Başlamadan önce

Aşağıdaki işlemleri yapmak için bu talimatları uygulayın:

  1. Earth Engine'e başvurma
  2. Google Cloud projesi oluşturma
  3. Projede Earth Engine API'yi etkinleştirin.
  4. Hizmet hesabı oluşturma
  5. Hizmet hesabına, Earth Engine hesaplamaları yapması için proje düzeyinde izin verme

Not: Bu eğitimi tamamlamak için Earth Engine erişimi için kayıtlı bir hizmet hesabınızın olması gerekir. Devam etmeden önce hizmet hesabı kaydetmek için bu talimatlara bakın.

Google Cloud'da kimlik doğrulama

İlk olarak, Google Cloud'a kimliği doğrulanmış istekler gönderebilmek için oturum açmanız gerekir. Projeyi aynı anda ayarlarsınız. Oturum açma işlemini tamamlamak için çıkıştaki talimatları uygulayın.

# INSERT YOUR PROJECT HERE
PROJECT = 'your-project'

!gcloud auth login --project {PROJECT}

Hizmet hesabınız için özel anahtar dosyası edinme

Earth Engine'i kullanmak için kayıtlı bir hizmet hesabınız olmalıdır. Yoksa bu talimatları uygulayarak edinebilirsiniz. Hizmet hesabınızın e-posta adresini aşağıdaki hücreye kopyalayın. (Earth Engine'i kullanmak için hizmet hesabının önceden kaydedilmiş olması gerekir.) Aşağıdaki hücrede, hizmet hesabı için bir anahtar dosyası oluşturmak üzere gsutil komut satırı kullanılır. Anahtar dosyası, not defteri sanal makinesinde oluşturulur.

# INSERT YOUR SERVICE ACCOUNT HERE
SERVICE_ACCOUNT='your-service-account@your-project.iam.gserviceaccount.com'
KEY = 'key.json'

!gcloud iam service-accounts keys create {KEY} --iam-account {SERVICE_ACCOUNT}

AuthorizedSession başlatın ve kimlik bilgilerinizi test edin

Kimlik bilgilerini almak için özel anahtarı kullanarak özel anahtarı test edin. HTTP istekleri göndermek için yetkili bir oturum oluşturmak üzere kimlik bilgilerini kullanın. Kimlik bilgilerinin çalışıp çalışmadığını kontrol etmek için oturum üzerinden GET istekte bulunun.

from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file(KEY)
scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/cloud-platform'])

session = AuthorizedSession(scoped_credentials)

url = 'https://earthengine.googleapis.com/v1beta/projects/earthengine-public/assets/LANDSAT'

response = session.get(url)

from pprint import pprint
import json
pprint(json.loads(response.content))

Hesaplamayı serileştirme

Bir şeyi hesaplama isteği gönderebilmeniz için hesaplamanın Earth Engine ifade grafiği biçimine dönüştürülmesi gerekir. Aşağıda, ifade grafiğinin nasıl elde edileceği gösterilmektedir.

Earth Engine'de kimlik doğrulama

Hizmet hesabından Earth Engine kapsamlı kimlik bilgileri alın. Bunları kullanarak Earth Engine'i başlatın.

import ee

# Get some new credentials since the other ones are cloud scope.
ee_creds = ee.ServiceAccountCredentials(SERVICE_ACCOUNT, KEY)
ee.Initialize(ee_creds)

Hesaplama tanımlama

İstemci API'si ile basit bir hesaplama prototipi oluşturun. Hesaplamanın sonucunun FeatureCollection olduğunu unutmayın. Hesaplamanın hatasız bir şekilde yapılabildiğini kontrol etmek için ilk Feature değerini (poligondaki ortalama NDVI) alın.

# A collection of polygons.
states = ee.FeatureCollection('TIGER/2018/States')
maine = states.filter(ee.Filter.eq('NAME', 'Maine'))

# Imagery: NDVI vegetation index from MODIS.
band = 'NDVI'
images = ee.ImageCollection('MODIS/006/MOD13Q1').select(band)
image = images.first()

computation = image.reduceRegions(
  collection=maine, 
  reducer=ee.Reducer.mean().setOutputs([band]), 
  scale=image.projection().nominalScale()
)

# Print the value to test.
print(computation.first().get(band).getInfo())

İfade grafiğini serileştirme

Bu işlem, Earth Engine ifade grafiğini (özellikle bir Expression) temsil eden bir nesne oluşturur. Genellikle bunları istemci API'lerinden biriyle oluşturmanız gerekir.

# Serialize the computation.
serialized = ee.serializer.encode(computation)

İsteği gönderin

computeFeatures uç noktasına bir POST isteği gönderin. İsteğin, serileştirilmiş hesaplama olan Expression içerdiğini unutmayın.

import json

url = 'https://earthengine.googleapis.com/v1beta/projects/{}/table:computeFeatures'

response = session.post(
  url = url.format(PROJECT),
  data = json.dumps({'expression': serialized})
)

import json
pprint(json.loads(response.content))

Yanıt, diğer uygulamalar veya işlemler tarafından kullanılabilen GeoJSON olarak sonuçtaki FeatureCollection öğesini içerir.