Lưu ý: REST API có các tính năng mới và nâng cao có thể không phù hợp với một số người dùng. Nếu bạn mới sử dụng Earth Engine, vui lòng bắt đầu bằng hướng dẫn về JavaScript.
Hướng dẫn khởi động nhanh về Earth Engine REST API cho biết cách truy cập vào các khối pixel từ một thành phần Earth Engine. Ví dụ về tính toán pixel minh hoạ cách áp dụng một phép tính cho các pixel trước khi nhận được kết quả. Ví dụ này minh hoạ cách lấy giá trị trung bình của các pixel trong mỗi hình ảnh của một ImageCollection
trong mỗi đối tượng của một FeatureCollection
. Cụ thể, đây là yêu cầu POST
đối với điểm cuối computeFeatures
.
Trước khi bắt đầu
Hãy làm theo các hướng dẫn này để:
- Đăng ký sử dụng Earth Engine
- Tạo một dự án trên Google Cloud
- Bật Earth Engine API trên dự án
- Tạo một tài khoản dịch vụ
- Cấp cho tài khoản dịch vụ quyền ở cấp dự án để thực hiện các phép tính trên Earth Engine
Lưu ý: Để hoàn tất hướng dẫn này, bạn sẽ cần có một tài khoản dịch vụ đã đăng ký quyền truy cập vào Earth Engine. Hãy xem các hướng dẫn này để đăng ký tài khoản dịch vụ trước khi tiếp tục.
Xác thực với Google Cloud
Điều đầu tiên cần làm là đăng nhập để bạn có thể đưa ra các yêu cầu đã xác thực cho Google Cloud. Bạn sẽ thiết lập dự án cùng lúc. Làm theo hướng dẫn trong đầu ra để hoàn tất quá trình đăng nhập.
# INSERT YOUR PROJECT HERE
PROJECT = 'your-project'
!gcloud auth login --project {PROJECT}
Lấy tệp khoá riêng tư cho tài khoản dịch vụ của bạn
Bạn phải có một tài khoản dịch vụ đã đăng ký để sử dụng Earth Engine. Nếu bạn chưa có, hãy làm theo các hướng dẫn này để lấy một mã. Sao chép địa chỉ email của tài khoản dịch vụ vào ô sau. (Bạn phải đăng ký tài khoản dịch vụ để sử dụng Earth Engine). Trong ô sau, dòng lệnh gsutil
được dùng để tạo một tệp khoá cho tài khoản dịch vụ. Tệp khoá sẽ được tạo trên VM của sổ tay.
# 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}
Bắt đầu AuthorizedSession
và kiểm tra thông tin đăng nhập của bạn
Kiểm thử khoá riêng tư bằng cách sử dụng khoá này để lấy thông tin đăng nhập. Sử dụng thông tin xác thực để tạo một phiên được uỷ quyền nhằm thực hiện các yêu cầu HTTP. Đưa ra yêu cầu GET
thông qua phiên để kiểm tra xem thông tin đăng nhập có hoạt động hay không.
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))
Tuần tự hoá một phép tính
Trước khi bạn có thể gửi yêu cầu tính toán một nội dung nào đó, nội dung tính toán cần được đưa vào định dạng biểu đồ biểu thức Earth Engine. Sau đây minh hoạ cách lấy biểu đồ biểu thức.
Xác thực với Earth Engine
Nhận thông tin đăng nhập có phạm vi Earth Engine từ tài khoản dịch vụ. Sử dụng các khoá này để khởi chạy 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)
Xác định một phép tính
Tạo nguyên mẫu cho một phép tính đơn giản bằng API ứng dụng. Lưu ý rằng kết quả của phép tính là một FeatureCollection
.
Để kiểm tra xem quá trình tính toán có thể thành công mà không gặp lỗi hay không, hãy lấy một giá trị từ Feature
đầu tiên (NDVI trung bình trong đa giác).
# 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())
Tuần tự hoá biểu đồ biểu thức
Thao tác này sẽ tạo một đối tượng đại diện cho biểu đồ biểu thức Earth Engine (cụ thể là Expression
). Nhìn chung, bạn nên tạo các đối tượng này bằng một trong các API ứng dụng.
# Serialize the computation.
serialized = ee.serializer.encode(computation)
Gửi yêu cầu
Gửi yêu cầu POST
đến điểm cuối computeFeatures
. Xin lưu ý rằng yêu cầu này chứa Expression
, là phép tính được chuyển đổi tuần tự.
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))
Phản hồi chứa FeatureCollection
kết quả dưới dạng GeoJSON, có thể được các ứng dụng hoặc quy trình khác sử dụng.