Earth Engine REST API की मदद से टेबल में मौजूद डेटा का हिसाब लगाना

ध्यान दें: REST API में नई और बेहतर सुविधाएं शामिल हैं. ऐसा हो सकता है कि ये सभी उपयोगकर्ताओं के लिए सही न हों. अगर आपने Earth Engine का इस्तेमाल पहले कभी नहीं किया है, तो कृपया JavaScript गाइड पढ़ें.

Earth Engine REST API को झटपट शुरू करने की गाइड में, Earth Engine ऐसेट से पिक्सल के ब्लॉक ऐक्सेस करने का तरीका बताया गया है. कंप्यूट पिक्सल के उदाहरण में बताया गया है कि नतीजे पाने से पहले, पिक्सल पर कंप्यूटेशन कैसे लागू किया जाता है. इस उदाहरण में, FeatureCollection की हर सुविधा में मौजूद ImageCollection की हर इमेज के पिक्सल का औसत निकालने का तरीका दिखाया गया है. खास तौर पर, यह computeFeatures एंडपॉइंट के लिए POST अनुरोध है.

शुरू करने से पहले

इन निर्देशों का पालन करके:

  1. Earth Engine के लिए आवेदन करना
  2. Google Cloud प्रोजेक्ट बनाना
  3. प्रोजेक्ट पर Earth Engine API चालू करें
  4. सेवा खाता बनाना
  5. 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 कमांड लाइन का इस्तेमाल किया गया है. कुंजी फ़ाइल, नोटबुक वीएम पर बनाई जाएगी.

# 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 शुरू करें और अपने क्रेडेंशियल की जांच करें

क्रेडेंशियल पाने के लिए, निजी कुंजी का इस्तेमाल करके उसकी जांच करें. एचटीटीपी अनुरोध करने के लिए, क्रेडेंशियल का इस्तेमाल करके एक मान्य सेशन बनाएं. क्रेडेंशियल काम कर रहे हैं या नहीं, यह देखने के लिए सेशन के ज़रिए 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 में पुष्टि करना

सेवा खाते से, 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)

कैलकुलेशन तय करना

क्लाइंट एपीआई की मदद से, सामान्य तौर पर होने वाली कंप्यूटिंग का प्रोटोटाइप बनाएं. ध्यान दें कि कैलकुलेशन का नतीजा FeatureCollection है. यह देखने के लिए कि बिना किसी गड़बड़ी के कैलकुलेशन की जा सकती है, पहले Feature (पॉलीगॉन में औसत एनडीवीआई) से वैल्यू पाएं.

# 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) को दिखाता है. आम तौर पर, आपको इन्हें क्लाइंट एपीआई में से किसी एक की मदद से बनाना चाहिए.

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

अनुरोध भेजें

computeFeatures एंडपॉइंट पर POST अनुरोध करें. ध्यान दें कि अनुरोध में 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 के तौर पर दिखाया जाता है. इसका इस्तेमाल अन्य ऐप्लिकेशन या प्रोसेस में किया जा सकता है.