বিলম্বিত মৃত্যুদন্ড

ক্লায়েন্ট বনাম সার্ভার ডক বর্ণনা করে যে কীভাবে আপনার স্ক্রিপ্টে উল্লেখ করা বস্তুগুলি ক্লায়েন্ট-সাইড বা সার্ভার-সাইড হতে পারে। সম্পূর্ণ স্ক্রিপ্টে শুধুমাত্র আপনি যে বস্তুগুলি ব্যবহার করতে চান তা নয়, তবে নির্দেশাবলীর একটি সেটও রয়েছে যা আর্থ ইঞ্জিনকে তাদের সাথে কী করতে হবে তা বলে৷ এই দস্তাবেজটি বর্ণনা করে যে কীভাবে সেই নির্দেশাবলী প্রক্রিয়াকরণের জন্য Google-এ পাঠানো হয় এবং কীভাবে ফলাফলগুলি প্রদর্শনের জন্য ক্লায়েন্টের কাছে ফেরত পাঠানো হয়।

আপনি যখন আর্থ ইঞ্জিনে একটি স্ক্রিপ্ট লেখেন (হয় জাভাস্ক্রিপ্ট বা পাইথন), সেই কোডটি সরাসরি Google এ আর্থ ইঞ্জিন সার্ভারে চলে না। পরিবর্তে, ক্লায়েন্ট লাইব্রেরি স্ক্রিপ্টটিকে JSON অবজেক্টের একটি সেটে এনকোড করে, বস্তুগুলিকে Google-এ পাঠায় এবং প্রতিক্রিয়ার জন্য অপেক্ষা করে। প্রতিটি বস্তু একটি নির্দিষ্ট আউটপুট পেতে প্রয়োজনীয় ক্রিয়াকলাপগুলির একটি সেট প্রতিনিধিত্ব করে, উদাহরণস্বরূপ ক্লায়েন্টে প্রদর্শনের জন্য একটি চিত্র। নিম্নলিখিত কোড বিবেচনা করুন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

var image = ee.Image('CGIAR/SRTM90_V4');
var operation = image.add(10);
print(operation.toString());
print(operation);

পাইথন সেটআপ

পাইথন এপিআই এবং ইন্টারেক্টিভ ডেভেলপমেন্টের জন্য geemap ব্যবহার করার জন্য পাইথন এনভায়রনমেন্ট পৃষ্ঠাটি দেখুন।

import ee
import geemap.core as geemap

Colab (পাইথন)

image = ee.Image('CGIAR/SRTM90_V4')
operation = image.add(10)
print(operation)
print(operation.getInfo())

প্রথম মুদ্রণ বিবৃতি JSON কাঠামো আউটপুট করবে যা ক্লায়েন্ট লাইব্রেরি Google-এর সার্ভারে সেই চিত্রটি বর্ণনা করতে ব্যবহার করে:

ee.Image({
  "type": "Invocation",
  "arguments": {
    "image1": {
      "type": "Invocation",
      "arguments": {
        "id": "CGIAR/SRTM90_V4"
      },
      "functionName": "Image.load"
    },
    "image2": {
      "type": "Invocation",
      "arguments": {
        "value": 10
      },
      "functionName": "Image.constant"
    }
  },
  "functionName": "Image.add"
})
    

দ্বিতীয় মুদ্রণ বিবৃতিটি Google-এ অনুরোধ পাঠাবে এবং Google সার্ভার থেকে POST প্রতিক্রিয়া আউটপুট করবে। এর সমস্ত JSON মহিমায় প্রতিক্রিয়া দেখতে, মুদ্রিত বস্তুর পাশে, কনসোলের ডানদিকে JSON লিঙ্কটিতে ক্লিক করুন:

{
  "type": "Image",
  "bands": [
    {
      "id": "elevation",
      "data_type": {
        "type": "PixelType",
        "precision": "int",
        "min": -32758,
        "max": 32777
      },
      "crs": "EPSG:4326",
      "crs_transform": [
        0.0008333333535119891,
        0,
        -180,
        0,
        -0.0008333333535119891,
        60
      ]
    }
  ]
}
    

প্রসেসিংয়ের জন্য Google-এ কোনো কিছু পাঠানো হয় না যতক্ষণ না এটির জন্য অনুরোধ করা হয়। এই উদাহরণে, একটি সার্ভার অবজেক্টে একটি getInfo() কলের ফলাফল প্রিন্ট করা একটি অনুরোধকে ট্রিগার করে। ফলাফলটি স্পষ্টভাবে অনুরোধ না করা পর্যন্ত সার্ভারে কোন প্রক্রিয়াকরণ করা হয় না। নোট করুন যে জাভাস্ক্রিপ্ট কোড এডিটরে print() হল একটি বিশেষ ক্লায়েন্ট-সাইড ফাংশন যা একটি অ্যাসিঙ্ক্রোনাস getInfo() কলকে মোড়ানো হয়; পাইথনের জন্য আমরা এটিকে সরাসরি কল করি।

কিছু অনুরোধ করার আরেকটি উদাহরণ হল কোড এডিটর বা জিম্যাপ মানচিত্র উপাদানে এটি প্রদর্শন করা। যখন এই অনুরোধটি Google-এ পাঠানো হয়, শুধুমাত্র কোড এডিটর বা geemap ম্যাপ উপাদানে ফলাফল প্রদর্শনের জন্য প্রয়োজনীয় টাইলগুলি ফেরত দেওয়া হয়। বিশেষত, মানচিত্রের অবস্থান এবং জুম স্তর নির্ধারণ করে যে কোন ডেটা প্রক্রিয়া করা হয় এবং মানচিত্রে প্রদর্শিত হতে পারে এমন চিত্রগুলিতে পরিণত হয়। আপনি যদি প্যান বা জুম করেন, মনে রাখবেন যে অন্যান্য টাইলগুলি অলসভাবে গণনা করা হয়। এই অন-ডিমান্ড সিস্টেমটি সমান্তরালকরণ এবং দক্ষ প্রক্রিয়াকরণের জন্য অনুমতি দেয়, তবে এর মানে হল যে মানচিত্রে প্রদর্শিত চিত্রটি বিভিন্ন ইনপুট থেকে উত্পাদিত হয়েছে জুম স্তর এবং মানচিত্রের সীমানার অবস্থানের উপর নির্ভর করে। স্কেল ডকে অনুরোধ থেকে একটি গণনার ইনপুট কীভাবে নির্ধারণ করা হয় সে সম্পর্কে আরও জানুন।