দ্রষ্টব্য: REST API-এ নতুন এবং উন্নত বৈশিষ্ট্য রয়েছে যা সমস্ত ব্যবহারকারীর জন্য উপযুক্ত নাও হতে পারে৷ আপনি যদি আর্থ ইঞ্জিনে নতুন হন, অনুগ্রহ করে জাভাস্ক্রিপ্ট নির্দেশিকা দিয়ে শুরু করুন।
আর্থ ইঞ্জিন REST API কুইকস্টার্ট দেখায় কিভাবে একটি আর্থ ইঞ্জিন সম্পদ থেকে পিক্সেলের ব্লক অ্যাক্সেস করতে হয়। ধরুন আপনি ফলাফল পাওয়ার আগে পিক্সেলগুলিতে একটি গণনা প্রয়োগ করতে চান। এই নির্দেশিকাটি দেখায় কিভাবে ক্লায়েন্ট লাইব্রেরিগুলির মধ্যে একটির সাথে একটি গণনার প্রোটোটাইপ করা যায়, গণনা গ্রাফটি সিরিয়াল করা যায় এবং গণনা করা ফলাফল পেতে REST API ব্যবহার করা যায়। REST API-এর মাধ্যমে গণনার অনুরোধ করা একটি POST
অনুরোধের সাথে সামঞ্জস্যপূর্ণ যে কোনো একটি কম্পিউট এন্ডপয়েন্ট, উদাহরণস্বরূপ computePixels
, computeFeatures
, অথবা generic value.compute
। বিশেষত, এই উদাহরণটি একটি ছোট অঞ্চলে সেন্টিনেল -2 চিত্রের একটি মধ্যক যৌগিকতা পাওয়ার প্রমাণ করে।
আপনি শুরু করার আগে
এই নির্দেশাবলী অনুসরণ করুন:
- আর্থ ইঞ্জিনের জন্য আবেদন করুন
- একটি Google ক্লাউড প্রকল্প তৈরি করুন
- প্রকল্পে আর্থ ইঞ্জিন API সক্ষম করুন৷
- একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
- আর্থ ইঞ্জিন গণনা করার জন্য পরিষেবা অ্যাকাউন্ট প্রকল্প স্তরের অনুমতি দিন
দ্রষ্টব্য : এই টিউটোরিয়ালটি সম্পূর্ণ করতে, আপনার একটি পরিষেবা অ্যাকাউন্টের প্রয়োজন হবে যা আর্থ ইঞ্জিন অ্যাক্সেসের জন্য নিবন্ধিত। এগিয়ে যাওয়ার আগে একটি পরিষেবা অ্যাকাউন্ট নিবন্ধন করতে এই নির্দেশাবলী দেখুন।
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 সহ একটি সাধারণ গণনা প্রোটোটাইপ করুন। মনে রাখবেন যে গণনার ফলাফল একটি Image
।
coords = [
-121.58626826832939,
38.059141484827485,
]
region = ee.Geometry.Point(coords)
collection = ee.ImageCollection('COPERNICUS/S2')
collection = collection.filterBounds(region)
collection = collection.filterDate('2020-04-01', '2020-09-01')
image = collection.median()
অভিব্যক্তি গ্রাফটি ক্রমানুসারে লিখুন
এটি একটি বস্তু তৈরি করবে যা আর্থ ইঞ্জিন এক্সপ্রেশন গ্রাফকে প্রতিনিধিত্ব করে (বিশেষত, একটি Expression
)। সাধারণভাবে, আপনার ক্লায়েন্ট APIগুলির একটি দিয়ে এটি তৈরি করা উচিত।
serialized = ee.serializer.encode(image)
পছন্দসই প্রজেকশন (WGS84) তৈরি করুন কাঙ্ক্ষিত স্কেলে (সেন্টিনেল-2 এর জন্য 10 মিটার)। এটি শুধুমাত্র ডিগ্রীতে পছন্দসই স্কেল, অভিক্ষেপের একক আবিষ্কার করার জন্য। এই স্কেলগুলি অনুরোধে affine রূপান্তর নির্দিষ্ট করতে ব্যবহার করা হবে।
# Make a projection to discover the scale in degrees.
proj = ee.Projection('EPSG:4326').atScale(10).getInfo()
# Get scales out of the transform.
scale_x = proj['transform'][0]
scale_y = -proj['transform'][4]
অনুরোধ পাঠান
computePixels
এন্ডপয়েন্টে একটি POST
অনুরোধ করুন। মনে রাখবেন যে অনুরোধটিতে Expression
রয়েছে, যা ক্রমিক গণনা। এটিতে একটি PixelGrid
রয়েছে। PixelGrid
কাঙ্খিত আউটপুটের dimensions
এবং অনুরোধকৃত স্থানাঙ্ক সিস্টেমের ইউনিটগুলিতে একটি AffineTransform
রয়েছে। এখানে স্থানাঙ্ক সিস্টেমটি ভৌগলিক, তাই রুপান্তরটি অনুরোধ করা চিত্র প্যাচের উপরের বাম কোণে ডিগ্রী এবং ভৌগলিক স্থানাঙ্কের স্কেল দিয়ে নির্দিষ্ট করা হয়েছে।
import json
url = 'https://earthengine.googleapis.com/v1beta/projects/{}/image:computePixels'
url = url.format(PROJECT)
response = session.post(
url=url,
data=json.dumps({
'expression': serialized,
'fileFormat': 'PNG',
'bandIds': ['B4','B3','B2'],
'grid': {
'dimensions': {
'width': 640,
'height': 640
},
'affineTransform': {
'scaleX': scale_x,
'shearX': 0,
'translateX': coords[0],
'shearY': 0,
'scaleY': scale_y,
'translateY': coords[1]
},
'crsCode': 'EPSG:4326',
},
'visualizationOptions': {'ranges': [{'min': 0, 'max': 3000}]},
})
)
image_content = response.content
আপনি যদি এটি একটি নোটবুকে চালান তবে আপনি IPython
চিত্র প্রদর্শন উইজেট ব্যবহার করে ফলাফল প্রদর্শন করতে পারেন।
# Import the Image function from the IPython.display module.
from IPython.display import Image
Image(image_content)