আর্থ ইঞ্জিন REST API সহ সারণী গণনা

দ্রষ্টব্য: REST API-এ নতুন এবং উন্নত বৈশিষ্ট্য রয়েছে যা সমস্ত ব্যবহারকারীর জন্য উপযুক্ত নাও হতে পারে৷ আপনি যদি আর্থ ইঞ্জিনে নতুন হন, অনুগ্রহ করে জাভাস্ক্রিপ্ট নির্দেশিকা দিয়ে শুরু করুন।

আর্থ ইঞ্জিন REST API কুইকস্টার্ট দেখায় কিভাবে একটি আর্থ ইঞ্জিন সম্পদ থেকে পিক্সেলের ব্লক অ্যাক্সেস করতে হয়। কম্পিউট পিক্সেল উদাহরণটি দেখায় কিভাবে ফলাফল পাওয়ার আগে পিক্সেলগুলিতে একটি গণনা প্রয়োগ করতে হয়। এই উদাহরণটি একটি FeatureCollection প্রতিটি বৈশিষ্ট্যে একটি ImageCollection এর প্রতিটি ছবিতে পিক্সেলের গড় পাওয়ার প্রমাণ করে। বিশেষ করে, এটি computeFeatures এন্ডপয়েন্টে একটি POST অনুরোধ।

আপনি শুরু করার আগে

এই নির্দেশাবলী অনুসরণ করুন:

  1. আর্থ ইঞ্জিনের জন্য আবেদন করুন
  2. একটি Google ক্লাউড প্রকল্প তৈরি করুন
  3. প্রকল্পে আর্থ ইঞ্জিন API সক্ষম করুন৷
  4. একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
  5. আর্থ ইঞ্জিন গণনা করার জন্য পরিষেবা অ্যাকাউন্ট প্রকল্প স্তরের অনুমতি দিন

দ্রষ্টব্য : এই টিউটোরিয়ালটি সম্পূর্ণ করতে, আপনার একটি পরিষেবা অ্যাকাউন্টের প্রয়োজন হবে যা আর্থ ইঞ্জিন অ্যাক্সেসের জন্য নিবন্ধিত। এগিয়ে যাওয়ার আগে একটি পরিষেবা অ্যাকাউন্ট নিবন্ধন করতে এই নির্দেশাবলী দেখুন।

Google ক্লাউডে প্রমাণীকরণ করুন

প্রথম জিনিসটি লগইন করতে হবে যাতে আপনি Google ক্লাউডে প্রমাণীকৃত অনুরোধ করতে পারেন। আপনি একই সময়ে প্রকল্প সেট করবেন। সাইন ইন সম্পূর্ণ করতে আউটপুটে নির্দেশাবলী অনুসরণ করুন।

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

!gcloud auth login --project {PROJECT}

আপনার পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী ফাইল পান

আর্থ ইঞ্জিন ব্যবহার করার জন্য আপনার ইতিমধ্যেই একটি পরিষেবা অ্যাকাউন্ট নিবন্ধিত থাকা উচিত৷ যদি আপনি না করেন, একটি পেতে এই নির্দেশাবলী অনুসরণ করুন. নিম্নলিখিত কক্ষে আপনার পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানাটি অনুলিপি করুন৷ (আর্থ ইঞ্জিন ব্যবহার করার জন্য পরিষেবা অ্যাকাউন্টটি ইতিমধ্যেই নিবন্ধিত হতে হবে)। নিম্নলিখিত কক্ষে, 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 শুরু করুন এবং আপনার শংসাপত্র পরীক্ষা করুন

শংসাপত্র পেতে এটি ব্যবহার করে ব্যক্তিগত কী পরীক্ষা করুন। 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))

একটি গণনা সিরিয়ালাইজ করুন

আপনি কিছু গণনা করার জন্য একটি অনুরোধ পাঠানোর আগে, গণনাটিকে আর্থ ইঞ্জিন এক্সপ্রেশন গ্রাফ বিন্যাসে রাখতে হবে। নিম্নে দেখানো হয়েছে কিভাবে এক্সপ্রেশন গ্রাফটি পেতে হয়।

আর্থ ইঞ্জিনে প্রমাণীকরণ করুন

পরিষেবা অ্যাকাউন্ট থেকে আর্থ ইঞ্জিন স্কোপড শংসাপত্র পান। আর্থ ইঞ্জিন শুরু করতে সেগুলি ব্যবহার করুন।

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())

অভিব্যক্তি গ্রাফটি ক্রমানুসারে লিখুন

এটি একটি বস্তু তৈরি করবে যা আর্থ ইঞ্জিন এক্সপ্রেশন গ্রাফকে প্রতিনিধিত্ব করে (বিশেষত, একটি Expression )। সাধারণভাবে, আপনার ক্লায়েন্ট APIগুলির একটি দিয়ে এটি তৈরি করা উচিত।

# 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))

প্রতিক্রিয়াটিতে GeoJSON হিসাবে ফলাফলের FeatureCollection রয়েছে, যা অন্যান্য অ্যাপ বা প্রক্রিয়া দ্বারা ব্যবহার করা যেতে পারে।