توجه: REST API دارای ویژگی های جدید و پیشرفته ای است که ممکن است برای همه کاربران مناسب نباشد. اگر با Earth Engine تازه کار هستید، لطفاً با راهنمای جاوا اسکریپت شروع کنید.
راهاندازی سریع Earth Engine REST API نحوه دسترسی به بلوکهای پیکسل از دارایی Earth Engine را نشان میدهد. مثال پیکسل های محاسباتی نشان می دهد که چگونه می توان قبل از به دست آوردن نتیجه، یک محاسبات را روی پیکسل ها اعمال کرد. این مثال نشان می دهد که میانگین پیکسل ها در هر تصویر یک ImageCollection
در هر ویژگی یک FeatureCollection
به دست می آید. به طور خاص، این یک درخواست POST
به نقطه پایانی computeFeatures
است.
قبل از شروع
این دستورالعمل ها را دنبال کنید تا:
- برای Earth Engine اقدام کنید
- یک پروژه Google Cloud ایجاد کنید
- Earth Engine API را در پروژه فعال کنید
- یک حساب کاربری ایجاد کنید
- برای انجام محاسبات Earth Engine به حساب کاربری سرویس اجازه دهید
توجه : برای تکمیل این آموزش، به یک حساب کاربری نیاز دارید که برای دسترسی Earth Engine ثبت شده باشد. قبل از ادامه، برای ثبت حساب سرویس، این دستورالعمل ها را ببینید.
احراز هویت در Google Cloud
اولین کاری که باید انجام دهید این است که وارد شوید تا بتوانید درخواست های احراز هویت شده را به Google Cloud ارسال کنید. شما پروژه را در همان زمان تنظیم خواهید کرد. دستورالعمل های موجود در خروجی را برای تکمیل ورود به سیستم دنبال کنید.
# INSERT YOUR PROJECT HERE
PROJECT = 'your-project'
!gcloud auth login --project {PROJECT}
یک فایل کلید خصوصی برای حساب سرویس خود دریافت کنید
برای استفاده از Earth Engine از قبل باید یک حساب سرویس ثبت شده داشته باشید. اگر این کار را نمی کنید، این دستورالعمل ها را دنبال کنید تا یکی را دریافت کنید. آدرس ایمیل حساب سرویس خود را در سلول زیر کپی کنید. (برای استفاده از Earth Engine، حساب سرویس باید قبلاً ثبت شده باشد). در سلول زیر، خط فرمان gsutil
برای ایجاد یک فایل کلیدی برای حساب سرویس استفاده می شود. فایل کلید در VM نوت بوک ایجاد می شود.
# 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
را شروع کنید و اعتبار خود را آزمایش کنید
کلید خصوصی را با استفاده از آن برای دریافت اعتبار آزمایش کنید. از اعتبارنامه ها برای ایجاد یک جلسه مجاز برای درخواست HTTP استفاده کنید. از طریق جلسه درخواست GET
کنید تا بررسی کنید که اعتبارنامه ها کار می کنند.
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))
یک محاسبات را سریال کنید
قبل از اینکه بتوانید درخواستی برای محاسبه چیزی ارسال کنید، باید محاسبات را در قالب نمودار بیانی Earth Engine قرار دهید. در زیر نحوه به دست آوردن نمودار عبارت را نشان می دهد.
احراز هویت به موتور زمین
اطلاعات کاربری با محدوده موتور زمین را از حساب سرویس دریافت کنید. از آنها برای مقداردهی اولیه Earth Engine استفاده کنید.
import ee
# Get some new credentials since the other ones are cloud scope.
ee_creds = ee.ServiceAccountCredentials(SERVICE_ACCOUNT, KEY)
ee.Initialize(ee_creds)
محاسبه را تعریف کنید
یک محاسبات ساده را با API کلاینت نمونه سازی کنید. توجه داشته باشید که نتیجه محاسبه یک FeatureCollection
است. برای بررسی اینکه آیا محاسبات می تواند بدون خطا انجام شود، یک مقدار از Feature
اول (متوسط NDVI در چند ضلعی) دریافت کنید.
# 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())
نمودار عبارت را سریالی کنید
این یک شی ایجاد می کند که نمودار عبارت Earth Engine را نشان می دهد (به طور خاص، یک Expression
). به طور کلی، شما باید اینها را با یکی از APIهای مشتری بسازید.
# Serialize the computation.
serialized = ee.serializer.encode(computation)
درخواست را ارسال کنید
یک درخواست POST
به نقطه پایانی computeFeatures
ارسال کنید. توجه داشته باشید که درخواست حاوی Expression
است که محاسبات سریالی است.
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))
پاسخ حاوی FeatureCollection
بهعنوان GeoJSON است که میتواند توسط برنامهها یا فرآیندهای دیگر مصرف شود.