যাচাইকরণ ও ইনিশিয়ালাইজেশন

ক্লায়েন্ট লাইব্রেরির মাধ্যমে Earth Engine-এ অনুরোধ করার আগে, আপনাকে অবশ্যই Earth Engine ক্লায়েন্টকে ইনিশিয়ালাইজ করার জন্য পরিচয় যাচাই করতে হবে এবং ফলাফলস্বরূপ ক্রেডেনশিয়াল ব্যবহার করতে হবে।

Earth Engine কোড এডিটর ও জাভাস্ক্রিপ্ট

কোড এডিটরে অটোমেটিক যাচাইকরণ ও ইনিশিয়ালাইজেশন ম্যানেজ করা হয়। আপনি কোড এডিটরের উপরের ডানদিকে আপনার লগ-ইন থেকে Cloud Project-এর মাধ্যমে অনুরোধ রাউট করার বিকল্প বেছে নিতে পারেন।

আপনি JavaScript API (কোড এডিটরের বাইরে) ব্যবহার করলে, ee.data-এ (যেমন, ee.data.authenticateViaPopup()) একটি প্রমাণীকরণ সহায়তা ব্যবহার করুন, তারপরে ee.initialize() ব্যবহার করুন, যেমনটি এই উদাহরণে দেখানো হয়েছে।

Python ও কমান্ড লাইন

Earth Engine Python ক্লায়েন্ট লাইব্রেরি ব্যবহার করার আগে, আপনাকে প্রমাণীকরণ (পরিচয় যাচাই) করতে হবে এবং Python ক্লায়েন্ট শুরু করার জন্য ফলাফলস্বরূপ ক্রেডেনশিয়াল ব্যবহার করতে হবে। যাচাইকরণ ফ্লো যাচাই করার জন্য Cloud প্রোজেক্ট ব্যবহার করে, এবং সেগুলি পেমেন্ট না করা (ফ্রি, অবাণিজ্যিক) ব্যবহার এবং পেমেন্ট করা ব্যবহারের জন্য ব্যবহার করা হয়। প্রমাণীকরণ ও ইনিশিয়ালাইজ করতে, এগুলি রান করান:

    ee.Authenticate()
    ee.Initialize(project='my-project')

এটি প্রথমে আপনার এনভায়রনমেন্টের জন্য সবচেয়ে ভাল যাচাইকরণ মোড বেছে নেবে এবং আপনার স্ক্রিপ্টের অ্যাক্সেস কনফার্ম করার জন্য আপনাকে প্রম্পট করবে। ক্রেডেনশিয়াল আগে থেকেই থাকলে, সেগুলি অটোমেটিক আবার ব্যবহার করা হয় - নতুন ক্রেডেনশিয়াল তৈরি করতে ee.Authenticate(force=True) রান করুন।

ইনিশিয়ালাইজেশন ধাপে যাচাই করা হয় যে সঠিক ক্রেডেনশিয়াল আছে কিনা, যা ee.Authenticate() থেকে তৈরি করা হয়েছে অথবা Google-এর ডিফল্ট ক্রেডেনশিয়াল হিসেবে আগে থেকেই আছে। তারপরে, এটি ব্যাকএন্ড সার্ভার সাপোর্ট করে এমন পদ্ধতি সহ Python ক্লায়েন্ট লাইব্রেরি শুরু করে। আপনার মালিকানাধীন অথবা ব্যবহার করার অনুমতি আছে এমন প্রোজেক্ট আপনাকে দিতে হবে। প্রোজেক্ট রেজিস্টার করতে এবং Earth Engine API চালু করতে ক্লাউড প্রোজেক্ট সেট-আপ দেখুন। এই প্রোজেক্টটি সব Earth Engine অপারেশন চালানোর জন্য ব্যবহার করা হবে।

কমান্ড লাইনে, এর সমতুল্য কল হল earthengine authenticate। ক্রেডেনশিয়ালের মেয়াদ শেষ হয়ে গেলে বা সেটি ভুল হলে, আপনাকে earthengine authenticate --force চালাতে হতে পারে। প্রতিটি কলের জন্য কমান্ড লাইন ইনভোকেশন ইনিশিয়ালাইজ করা হবে, এবং প্রোজেক্ট সেট করতে আপনি --project আর্গুমেন্ট ব্যবহার করতে পারেন।

এছাড়াও, আপনি earthengine set_project {my-project} চালিয়ে ভবিষ্যতের সব কলের জন্য একটি প্রোজেক্ট কনফিগার করতে পারবেন। সরাসরি কোনও প্রোজেক্ট নির্দিষ্ট করা না থাকলে, কমান্ড লাইন ও ee.Initialize() এটি ব্যবহার করবে। gcloud-এর মাধ্যমে (নিচে দেখুন) যাচাইকরণ ব্যবহার করলে, gcloud auth application-default set-quota-project {my-project}-এর সেট করা প্রোজেক্টটি চূড়ান্ত কেস হিসেবে ব্যবহার করা হবে।

যাচাইকরণ সংক্রান্ত বিবরণ

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

এর সাথে যুক্ত সিস্টেমের সংবেদনশীলতার কারণে, আপনার নির্দিষ্ট পরিস্থিতির উপর নির্ভর করে এগিয়ে যাওয়ার বিভিন্ন উপায় রয়েছে। বেশিরভাগ বিকল্প auth_mode প্যারামিটার দ্বারা নিয়ন্ত্রিত হয়: হয় ee.Authenticate(auth_mode=...) হিসেবে অথবা কমান্ড লাইনে earthengine authenticate --auth_mode=... হিসেবে ।

মনে রাখবেন, আপনার এনভায়রনমেন্টে Google ক্রেডেনশিয়াল আগে থেকেই থাকলে, আপনাকে ee.Authenticate() কল করার প্রয়োজন নাও হতে পারে। Google Cloud VM, App Engine এবং অন্যান্য এনভায়রনমেন্ট ব্যবহারযোগ্য "অ্যাম্বিয়েন্ট ক্রেডেনশিয়াল" প্রদান করে এবং gcloud auth application-default login সেগুলিও তৈরি করবে।

তবে, সর্বাধিক কম্প্যাটিবিলিটি নিশ্চিত করতে, সব স্ক্রিপ্টের শুরুতে ee.Authenticate() ব্যবহার করার সাজেশন দেওয়া হয়। কোনও auth_mode প্যারামিটার না থাকলে, এটি বেশিরভাগ পরিস্থিতিতে কাজ করার জন্য ডিজাইন করা হয়েছে, তবে ডিফল্ট মোড কাজ না করলে, নিচে দেওয়া বিবরণ অনুসরণ করুন। ডিফল্ট মোড নিম্নলিখিতভাবে বেছে নেওয়া হয়:

  • colab Google Colab নোটবুকে রান করলে
  • notebook অন্য কোনও Colab নয় এমন Jupyter নোটবুকে রান করলে
  • localhost কোনও ওয়েব ব্রাউজার শনাক্ত করা গেলে এবং কোনও gcloud বাইনারি ইনস্টল করা না থাকলে
  • gcloud, অন্যথায়। এই মোডের জন্য আপনাকে gcloud ইনস্টল করতে হবে।

দ্রুত রেফারেন্স গাইড ও টেবিল

ee.Authenticate()-এর বেছে নেওয়া ডিফল্ট মোড কাজ না করলে, সম্ভাব্য বিকল্পগুলি এই সিদ্ধান্ত নির্দেশিকায় উল্লেখ করা আছে। যেমন, আপনি অন্য নোটবুক এনভায়রনমেন্টে রান করলে, আপনাকে notebook স্পষ্টভাবে উল্লেখ করতে হতে পারে।

  • স্থানীয় পরিবেশ।
    • "লোকাল" বলতে বোঝায় যে আপনি নিজের সামনে থাকা মেশিনে Python শেল বা Python নোটবুকে কোড রান করাচ্ছেন - অথবা আরও নির্দিষ্টভাবে বলতে গেলে, একই মেশিনে আপনার ওয়েব ব্রাউজার রান করছে। এর মধ্যে রিমোট-ডেস্কটপ পরিস্থিতি অন্তর্ভুক্ত যেখানে Python ও ব্রাউজার একই (রিমোট) মেশিনে আছে।
    • auth_mode=localhost ব্যবহার করা সবচেয়ে সহজ এবং gcloud ইনস্টল করা না থাকলে এটি ডিফল্ট হিসেবে বেছে নেওয়া হবে, তবে আপনার স্ক্রিপ্ট শুধুমাত্র লোকাল এনভায়রনমেন্টে কাজ করবে।
    • auth_mode=gcloud ও auth_mode=notebook দুটিই উপলভ্য।
  • রিমোট এনভায়রনমেন্ট।
    • "রিমোট" বলতে বোঝায় যে আপনার ব্রাউজার একটি (লোকাল) মেশিনে আছে কিন্তু আপনার কোড অন্য কোথাও চলছে, যেমন রিমোট ওয়ার্কস্টেশন বা ওয়েব-ভিত্তিক নোটবুকে।
    • Colab-এ থাকলে, auth_mode=colab ব্যবহার করুন; অথবা অন্য API কল করার জন্য scopes সেট করতে হলে gcloud ব্যবহার করুন।
    • আপনি রিমোট মেশিন ও লোকাল মেশিন, দু'টিতেই gcloud ইনস্টল করতে পারলে, auth_mode=gcloud ব্যবহার করুন।
    • আপনি যদি কোনও যাচাইকরণ প্রোজেক্ট ব্যবহার করতে পারেন (নিচে দেখুন), তাহলে auth_mode=notebook ব্যবহার করুন।
    • অন্যথায়, আপনি যদি কোনও প্রোজেক্ট ব্যবহার করতে, gcloud ইনস্টল করতে, Colab ব্যবহার করতে বা একই মেশিনে কোনও ব্রাউজার ব্যবহার করতে না পারেন:
    • প্রোজেক্ট তৈরি করা সম্পর্কে অ্যাডমিনিস্ট্রেটরের সাথে (আবার) কথা বলুন। যেমন:
      • আপনার জন্য কোনও প্রোজেক্ট কনফিগার করতে অ্যাডমিনিস্ট্রেটরকে বলুন (মালিক বা এডিটর বা OAuth কনফিগারেশন এডিটর হিসেবে)
      • অথবা প্রোজেক্ট তৈরি করার অনুমতি দেওয়ার জন্য অ্যাডমিনিস্ট্রেটরকে বলুন।

এই টেবিলে দেখানো হয়েছে যে কোন মোডে কোন কোন ফিচারের সংমিশ্রণ কাজ করে।

লোকাল বা রিমোটের জন্য? প্রোজেক্ট প্রয়োজন স্কোপ সেট করা যায় স্থানীয় CLI প্রয়োজন প্রোজেক্টের মালিক
localhost স্থানীয় হ্যাঁ হ্যাঁ না না
colab রিমোট হ্যাঁ না না না
gcloud উভয়কেই হ্যাঁ হ্যাঁ না না
notebook উভয়কেই হ্যাঁ হ্যাঁ না হ্যাঁ

পরিষেবা অ্যাকাউন্ট ও Compute Engine-এর জন্য ক্রেডেনশিয়াল

ee.Initialize() Earth Engine ক্রেডেনশিয়াল (যা ee.Authenticate() ~/.config/earthengine/credentials-এ সেভ করে) ব্যবহার করবে অথবা google.auth.default() থেকে ক্রেডেনশিয়াল রিট্রিভ করবে, কিন্তু প্রয়োজন হলে আপনি অন্য কোথাও থেকে ক্রেডেনশিয়াল ব্যবহার করার জন্য credentials= আর্গুমেন্ট পাস করতে পারবেন, এর ফলে এইসব ডিফল্ট বাইপাস করা যাবে।

আপনি যদি এমন Python কোড যাচাই করিয়ে থাকেন যা অটোমেটিক চলবে, তাহলে আপনি ব্যবহারকারীর অ্যাকাউন্টের পরিবর্তে পরিষেবা অ্যাকাউন্টের মাধ্যমে যাচাই করিয়ে নিতে পারেন। Earth Engine-এর সাথে পরিষেবা অ্যাকাউন্ট ব্যবহার করার জন্য এইসব ডকুমেন্ট দেখুন। অন্যান্য পদ্ধতির মধ্যে রয়েছে authenticate_service_account Colab auth মডিউল এবং পরিষেবা অ্যাকাউন্ট হিসেবে প্রমাণীকরণ করার জন্য Cloud গাইড-এ বর্ণিত পদ্ধতি।

আপনার কোড Compute Engine VM-এ রান করলে, এনভায়রনমেন্টের জন্য একটি ডিফল্ট সার্ভিস অ্যাকাউন্ট তৈরি করা হয়, যা ee.Initialize() ডিফল্ট হিসেবে ব্যবহার করা হবে। VM যে Cloud Project-এর মাধ্যমে চালু করা হয়েছে সেটি Earth Engine-এর সাথে (কমার্শিয়াল বা নন-কমার্শিয়াল) ব্যবহারের জন্য রেজিস্টার করা না থাকলে, আপনাকে Earth Engine ব্যবহার করার জন্য পরিষেবা অ্যাকাউন্ট রেজিস্টার করতে হতে পারে।

মোড সম্পর্কিত বিবরণ

auth_mode=colab. প্রয়োজন হলে colab.auth.authenticate_user() চালিয়ে Colab-এ কাজ করে এমন ডিফল্ট ক্রেডেনশিয়াল ee.Authenticate() তৈরি বা সংগ্রহ করবে। ক্রেডেনশিয়াল সবসময় cloud-platform স্কোপ ব্যবহার করে এবং অন্যান্য Cloud API কল করার জন্যও ব্যবহার করা যেতে পারে।

auth_mode=gcloud. এটি gcloud টুলে যাচাইকরণ ডেলিগেট করে এবং এটি ডিফল্ট Earth Engine স্কোপ (earthengine, cloud-platform ও drive) বা scopes আর্গুমেন্টে থাকা স্কোপের সাথে gcloud auth application-default login চালানোর মতো একই। লোকাল ও রিমোট, উভয় ক্ষেত্রেই gcloud মোড কাজ করে।

gcloud মোডের জন্য স্টেপ-বাই-স্টেপ নির্দেশাবলী (লোকাল ও রিমোট কেস)

  1. লোকাল মেশিনে gcloud ইনস্টল করা আছে কিনা তা যাচাই করুন।
    • টার্মিনালে, gcloud help চালান। gcloud ইনস্টল করা না থাকলে, gcloud ইনস্টল করতে এইসব নির্দেশাবলী অনুসরণ করুন।
  2. লোকাল মেশিন টার্মিনাল
    • টার্মিনালে, earthengine authenticate চালান।
    • কমান্ডের আউটপুট থেকে বোঝা যাবে যে gcloud ব্যবহার করে ক্রেডেনশিয়াল সংগ্রহ করা হচ্ছে।
    • অ্যাকাউন্ট বেছে নেওয়ার পৃষ্ঠা সহ একটি ব্রাউজার উইন্ডো খুলবে। ব্রাউজার অটোমেটিক না খুললে, URL-এ ক্লিক করুন।
  3. ব্রাউজার: অ্যাকাউন্ট বেছে নেওয়া
    • যাচাইকরণের জন্য আপনি যে অ্যাকাউন্ট ব্যবহার করতে চান সেটি বেছে নিন।
  4. ব্রাউজার: সম্মতি স্ক্রিন
    • আপনি অনুরোধ করা স্কোপ দিতে ইচ্ছুক কিনা তা জানান এবং "অনুমতি দিন" বিকল্পে ক্লিক করুন।
  5. ব্রাউজার: কনফার্মেশন স্ক্রিন
    • ব্রাউজার একটি পৃষ্ঠা দেখাবে যা কনফার্ম করবে যে আপনি যাচাইকৃত এবং আপনার টার্মিনাল উইন্ডোতে earthengine authenticate কমান্ড রিপোর্ট করবে যে "অনুমোদন টোকেন সফলভাবে সেভ করা হয়েছে।"
    • কিছু ক্ষেত্রে, ওয়েবপেজ আপনাকে একটি কোড দেবে যা Python এনভায়রনমেন্টে পেস্ট করতে হবে।
  6. ইনিশিয়ালাইজেশন প্রসেস চালিয়ে যান।

auth_mode=localhost. gcloud ইনস্টল করা নেই এমন ক্ষেত্রে এটি gcloud-এর মতো ফ্লো। এটি gcloud-এর মতো একই ধাপগুলি পারফর্ম করে, তবে শুধুমাত্র লোকাল কেসের জন্য কাজ করে। আপনি ঐচ্ছিক ইন্টারনেট পোর্ট নম্বর দিতে পারেন, যেমন localhost:8086 অথবা পোর্ট অটোমেটিক বেছে নিতে localhost:0 ব্যবহার করতে পারেন। ডিফল্ট পোর্ট হল ৮০৮৫।

auth_mode=notebook. এটি একটি সাধারণ-উদ্দেশ্যমূলক মোড যা এমন রিমোট পরিস্থিতিতে কাজ করার জন্য ডিজাইন করা হয়েছে যেখানে স্থানীয় কমান্ড লাইন উপলভ্য নেই। এটি আপনাকে নোটবুক যাচাইকারী পৃষ্ঠায় নিয়ে যাবে যেখানে আপনাকে একটি "যাচাইকরণ প্রোজেক্ট" বেছে নিতে বা তৈরি করতে হবে - নিচে বিবরণ ও সমস্যার সমাধান সংক্রান্ত নির্দেশিকা দেখুন। ee.Initialize()-এ পাঠানো প্রোজেক্টের সাথে এটি ম্যাচ করতে হবে না - আপনি আলাদা আলাদা নোটবুকে আলাদা আলাদা প্রোজেক্টে কাজ করার সময় যাচাইকরণের জন্য একই প্রোজেক্ট রাখতে পারেন। ee.Initialize()-এ স্পষ্টভাবে প্রোজেক্ট পাস করার জন্য সাজেস্ট করা হয়, তবে ডিফল্ট হিসেবে যাচাইকরণ প্রোজেক্ট ব্যবহার করা হবে।

নোটবুক মোডের জন্য স্টেপ-বাই-স্টেপ নির্দেশাবলী

  1. ব্রাউজার: Notebook
    1. "notebook" মোড ব্যবহার করে একটি যাচাইকরণ ফ্লো শুরু করতে, নোটবুক কোড সেলে নিম্নলিখিত কোডটি রান করান।
      import ee
      ee.Authenticate()
      নতুন ট্যাবে Notebook Authenticator পৃষ্ঠা খুলতে, সেল আউটপুটে দেওয়া লিঙ্কে ক্লিক করুন।
  2. ব্রাউজার: Notebook Authenticator
    1. সঠিক ব্যবহারকারীর অ্যাকাউন্ট তালিকাভুক্ত আছে কিনা তা যাচাই করুন।
    2. যাচাইকরণের জন্য ব্যবহার করতে একটি Google Cloud প্রোজেক্ট বেছে নিন। আপনাকে নতুন প্রোজেক্ট তৈরি করতে হলে, আমরা "ee-xyz" নামকরণের কনভেনশন ব্যবহার করার সাজেশন দিই, যেখানে xyz হল আপনার সাধারণ Earth Engine ইউজারনেম। (আপনি ক্লাউড প্রোজেক্ট বেছে নিতে বা তৈরি করতে না পারলে, নিচে সমস্যার সমাধান বিভাগ দেখুন।)
    3. 'টোকেন জেনারেট করুন' বিকল্পে ক্লিক করুন।
  3. ব্রাউজার: অ্যাকাউন্ট বেছে নেওয়া
    • আপনাকে অ্যাকাউন্ট বেছে নেওয়ার পৃষ্ঠা দেখানো হবে। আপনি যে ব্যবহারকারীর অ্যাকাউন্টকে নোটবুক থেকে অ্যাক্সেস দিতে চান সেটিতে ক্লিক করুন।
  4. ব্রাউজার: সতর্কতা পৃষ্ঠা
    • একটি সতর্কতা পৃষ্ঠা দেখানো হয়, যেখানে উল্লেখ করা হয় যে Google অ্যাপটি তৈরি করেনি (অর্থাৎ, নোটবুকে থাকা কোড)। সম্মতি জানাতে 'চালিয়ে যান' বিকল্পে ক্লিক করুন।
  5. ব্রাউজার: সম্মতি স্ক্রিন
    • অনুরোধ করা স্কোপে অ্যাক্সেস দিতে আপনি রাজি কিনা তা জানান এবং চালিয়ে যান বিকল্পে ক্লিক করুন।
  6. ব্রাউজার: অথরাইজেশন কোড স্ক্রিন
    • অনুমোদন যাচাইকরণ কোড কপি করুন
  7. ব্রাউজার: Notebook
    • নোটবুক ট্যাবে ফিরে যান এবং যাচাইকরণ কোডটি নোটবুক সেলের আউটপুটে পেস্ট করুন।
    • সেল আউটপুটে এগুলি উল্লেখ করা উচিত: "অনুমোদন টোকেন সেভ করা হয়েছে।"
  8. ইনিশিয়ালাইজেশন প্রসেস চালিয়ে যান।

নোটবুক মোডে একটি খুব কম ব্যবহৃত quiet প্যারামিটার আছে: এটি সেট করা থাকলে, এটি "ননইন্টার‍্যাক্টিভ" হিসেবে রান করে এবং আপনাকে কোনও প্রম্পট দেখায় না বা অথ কোড লেখার জন্য অপেক্ষা করে না। এর পরিবর্তে, কোড সেভ করার জন্য এটি চালানোর কমান্ড দেয়।

যাচাইকরণ প্রোজেক্ট

নোটবুক মোডে ব্যবহৃত অথেন্টিকেশন প্রোজেক্টে আপনাকে মালিক, এডিটর বা OAuth কনফিগারেশন এডিটর হতে হবে। অনেক ক্ষেত্রে, বিশেষ করে ছোট টিমের ক্ষেত্রে, Notebook Authenticator পৃষ্ঠায় আপনি যে যাচাইকরণ প্রোজেক্ট ব্যবহার করেন সেটি অন্যান্য কাজের জন্য ব্যবহার করা প্রাথমিক প্রোজেক্টের মতোই হতে পারে।

নিরাপত্তা সংক্রান্ত উদ্বেগের কারণে, যাচাইকরণ প্রোজেক্টে "OAuth ক্লায়েন্ট কনফিগারেশন" একবারই সেট-আপ করা যায়। আপনি বা অন্য ব্যবহারকারী যদি অন্য কোনও কারণে প্রোজেক্টে OAuth ক্লায়েন্ট সেট-আপ করে থাকেন, তাহলে সেটি সরানো যাবে না এবং আপনি "OAuth2 ক্লায়েন্ট কনফিগারেশন মানানসই নয়" লেখা একটি সমস্যা দেখতে পাবেন। আপনাকে যাচাইকরণের জন্য অন্য প্রোজেক্ট ব্যবহার করতে হবে অথবা উপরে উল্লিখিত colab, localhost বা gcloud মোড ব্যবহার করতে হবে।

স্কোপের বিবরণ

Earth Engine-এর ডিফল্ট যাচাইকরণ সেটিংসে উপলভ্য সব স্কোপ অন্তর্ভুক্ত থাকে, তাই ডিফল্ট সেটিংস আপনার প্রয়োজন পূরণ করলে, আপনি এই বিভাগটি এড়িয়ে যেতে পারেন।

Earth Engine স্কোপ: একটি OAuth 2.0 স্কোপ সেইসব রিসোর্স ও অপারেশনকে সংজ্ঞায়িত ও সীমাবদ্ধ করে যেগুলি কোনও অ্যাপ্লিকেশন ব্যবহারকারীর হয়ে অ্যাক্সেস করার অনুমতি পায়। Earth Engine-এর সাথে যাচাইকরণের জন্য OAuth ব্যবহার করলে, আপনাকে অবশ্যই নিম্নলিখিত স্কোপের মধ্যে এক বা একাধিক স্কোপের জন্য অনুরোধ করতে হবে:

  • https://www.googleapis.com/auth/earthengine: Earth Engine অ্যাসেট ও রিসোর্সে রিড ও রাইট অ্যাক্সেস। অ্যাসেট তৈরি, পরিবর্তন বা মুছে ফেলা, অ্যাসেট সংক্রান্ত অনুমতি ম্যানেজ করা এবং এক্সপোর্ট টাস্ক চালানোর জন্য প্রয়োজন।
  • https://www.googleapis.com/auth/earthengine.readonly: Earth Engine অ্যাসেটে শুধুমাত্র-পঠনযোগ্য অ্যাক্সেস।

দুটি স্কোপই স্ক্রিপ্ট এক্সিকিউট করা এবং গণনা (যেমন, এক্সপ্রেশন মূল্যায়ন করা বা ম্যাপ ভিজ্যুয়ালাইজেশন রেন্ডার করা) চালানোর অনুমতি দেয়।

Google Cloud ও Drive স্কোপ: আপনার Earth Engine কোয়েরি বা স্ক্রিপ্ট এক্সটার্নাল ডেটা বা অ্যাসেট রেফার করলে, আপনার ক্রেডেনশিয়ালে অবশ্যই সেইসব পরিষেবার জন্য উপযুক্ত স্কোপ থাকতে হবে:

  • Cloud Storage (GCS) (Cloud Storage বাকেট থেকে পড়ার বা তাতে লেখার সময়, যেমন, ক্লাউড-অপ্টিমাইজ করা GeoTIFF লোড করা বা টাস্ক আউটপুট এক্সপোর্ট করা):
    • https://www.googleapis.com/auth/devstorage.full_control
    • https://www.googleapis.com/auth/devstorage.read_write
    • https://www.googleapis.com/auth/devstorage.read_only
  • BigQuery (BQ) (BigQuery-তে টেবিল রিড করা বা এক্সপোর্ট লেখা হলে):
    • https://www.googleapis.com/auth/bigquery
  • Google Drive (Google Drive-এ ডেটা অ্যাক্সেস বা এক্সপোর্ট করার সময়):
    • https://www.googleapis.com/auth/drive
    • https://www.googleapis.com/auth/drive.readonly

এছাড়াও, Google Cloud এমন বিস্তৃত স্কোপ অফার করে যা সমস্ত Google Cloud পরিষেবা অন্তর্ভুক্ত করে:

  • Cloud Platform (Google Cloud পরিষেবায় বিস্তৃত অ্যাক্সেস, যার মধ্যে Earth Engine, Cloud Storage ও BigQuery অন্তর্ভুক্ত; মনে রাখবেন যে Google Drive একটি আলাদা Workspace পরিষেবা এবং এই স্কোপের মধ্যে পড়ে না):
    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud-platform.read-only

ডিফল্ট স্কোপ: Earth Engine Code Editor এবং ক্লায়েন্ট লাইব্রেরি (যেমন ee.Authenticate()) দু'টিই কনফিগার করা ডিফল্ট স্কোপের মধ্যে এগুলি অন্তর্ভুক্ত: earthengine, cloud-platform এবং drive (বিস্তারিত জানতে আগের অংশ দেখুন)। এর ফলে, আপনার যদি নির্দিষ্ট সুরক্ষা সংক্রান্ত বিধিনিষেধ বা সাংগঠনিক নীতি থাকে যার জন্য অনুমতি সীমিত করতে হয়, তবেই শুধুমাত্র স্কোপ কাস্টমাইজেশন (যেমন, ee.Authenticate(scopes=[...])-এ scopes প্যারামিটার ব্যবহার করা) প্রয়োজন।

সমস্যার সমাধান

আমি Cloud Project তৈরি করতে না পারলে কী হবে?

কিছু সংস্থা ক্লাউড প্রোজেক্ট কে তৈরি করতে পারবে তা নিয়ন্ত্রণ করে। প্রোজেক্ট তৈরি করার সময় Notebook Authenticator পৃষ্ঠায় কোনও সমস্যা হলে, এগুলি চেষ্টা করে দেখুন:

  1. আপনার কাছে প্রয়োজনীয় অনুমতি আছে কিনা তা কনফার্ম করতে, সরাসরি একটি প্রোজেক্ট তৈরি করার চেষ্টা করুন।
  2. প্রোজেক্ট তৈরি করার জন্য কী কী প্রসেস উপলভ্য আছে তা জানতে আপনার সংস্থার অ্যাডমিনিস্ট্রেটরের সাথে কথা বলুন।
  3. কোনও অ-সাংগঠনিক অ্যাকাউন্ট থেকে প্রোজেক্ট তৈরি করুন এবং আপনি কাজের জন্য যে অ্যাকাউন্ট ব্যবহার করেন সেটি প্রোজেক্টের মালিক হিসেবে যোগ করুন। মনে রাখবেন: কিছু সংস্থার নিরাপত্তা নীতি আছে যা এক্সটার্নাল প্রোজেক্ট থেকে OAuth ক্লায়েন্ট অ্যাক্সেস করা আটকায়।

সমস্যা: "Earth Engine API আগে XXX প্রোজেক্টে ব্যবহার করা হয়নি অথবা এটি বন্ধ করা আছে"

প্রথমত, নিশ্চিত করুন যে আপনি ee.Initialize()-এ বা কমান্ড লাইনে কোনও প্রোজেক্ট কনফিগার করেছেন (Cloud এবং Colab-এর দেওয়া ডিফল্ট প্রোজেক্টে Earth Engine চালু করা থাকবে না)। দ্বিতীয়ত, আপনার প্রোজেক্টে Earth Engine API চালু আছে কিনা দেখুন।

সমস্যা: "প্রোজেক্টে OAuth2 ক্লায়েন্ট কনফিগারেশন মানানসই নয়"

ক্লাউড প্রোজেক্টে শুধুমাত্র একটি OAuth2 ক্লায়েন্ট কনফিগারেশন থাকতে পারে। কোনও ক্লাউড প্রোজেক্টে OAuth2 ক্লায়েন্ট কনফিগারেশন সেট করা আছে কিনা তা আপনি ক্রেডেনশিয়াল পৃষ্ঠায় OAuth 2.0 ক্লায়েন্ট আইডি চেক করে দেখতে পারেন। আপনাকে হয় এমন কোনও Cloud প্রোজেক্ট বেছে নিতে হবে যাতে Notebook Authenticator-এর সেট-আপ করা উপযুক্ত কনফিগারেশন আগে থেকেই আছে, অথবা এমন কোনও Cloud প্রোজেক্ট বেছে নিতে হবে বা তৈরি করতে হবে যাতে কোনও OAuth2 ক্লায়েন্ট নেই। এই প্রোজেক্টটি Authenticator অটোমেটিক কনফিগার করবে। OAuth সিস্টেম ব্যবহারকারীদের কনফিগারেশন মুছে দেওয়ার অনুমতি দেয় না, তাই অন্য প্রোজেক্ট ব্যবহার করতে হবে। এই প্রজেক্টটি অন্য Earth Engine কাজের জন্য ব্যবহৃত প্রজেক্টের মতো হতে হবে না। মনে রাখবেন, এই সমস্যা Colab মোডে হয় না।

সমস্যা: "gcloud কাজ করেনি। উপরে কোনও সমস্যা হয়েছে কিনা দেখুন এবং প্রয়োজন হলে gcloud ইনস্টল করুন।"

gcloud ইনস্টল করা না থাকলে বা আপনার PATH-এ না থাকলে এই সমস্যা হতে পারে। এছাড়াও, আপনি যদি নোটবুকের কোড সেল থেকে ee.Authenticate(auth_mode='gcloud')-এ কল করেন, তাহলে এটি হতে পারে। এর পরিবর্তে ee.Authenticate() ব্যবহার করুন, এটি ডিফল্ট হিসেবে নোটবুক মোড যাচাইকরণ ব্যবহার করবে। আপনি প্রোজেক্ট তৈরি করতে না পারলে, উপরে দেওয়া সমাধান দেখুন।

gcloud ইনস্টল করার জন্য আমার কাছে কোনও লোকাল মেশিনের অ্যাক্সেস না থাকলে কী হবে?

আপনি যদি স্থানীয় টার্মিনালে অ্যাক্সেস ছাড়াই শুধুমাত্র ওয়েব-ভিত্তিক পরিবেশে কাজ করেন, এবং আপনাকে এখনও রিমোট টার্মিনাল ব্যবহার করতে হয়, তাহলে আপনি এখনও earthengine authenticate --auth_mode=notebook কমান্ড চালিয়ে নোটবুক মোড ট্রিগার করে কমান্ড লাইন টুল চালু করতে পারবেন।

সমস্যা 400: redirect_uri_mismatch

ওয়েব ব্রাউজারে অ্যাক্সেস না থাকা কোনও রিমোট মেশিনে যাচাই করার সময় আপনি এই সমস্যা পেতে পারেন। কমান্ড লাইন থেকে earthengine authenticate রান করালে --quiet যোগ করার চেষ্টা করুন অথবা Python ক্লায়েন্ট ব্যবহার করলে ee.Authenticate(quiet=True) যোগ করুন। এর জন্য আপনাকে এমন মেশিন থেকে gcloud-এর মাধ্যমে যাচাই করতে হবে যেটিতে ওয়েব ব্রাউজারে অ্যাক্সেস আছে।

সমস্যা: "আপনার অ্যাপ্লিকেশন, লোকাল অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে যাচাইকরণ করছে। earthengine.googleapis.com API-এর জন্য কোটা প্রোজেক্ট প্রয়োজন, যা ডিফল্ট হিসেবে সেট করা থাকে না।"

Earth Engine আপনার প্রোজেক্ট আইডি নির্ধারণ করতে না পারলে এই সমস্যা হতে পারে। Google Cloud-এর সমস্যার সমাধান সংক্রান্ত বিকল্প কাজ না করলে, earthengine set_project YOUR_PROJECT_ID বা gcloud auth application-default set-quota-project YOUR_PROJECT_ID চালানোর চেষ্টা করুন।

সমস্যা: "[Cloud Storage / BigQuery]-এর জন্য প্রয়োজনীয় স্কোপ নেই"

এই সমস্যাটি তখন হয় যখন Earth Engine-এর কোনও অনুরোধ Cloud Storage বা BigQuery রিসোর্স অ্যাক্সেস করে, কিন্তু Earth Engine চালু করার জন্য ব্যবহৃত ক্রেডেনশিয়ালে সেই পরিষেবার জন্য প্রয়োজনীয় স্কোপ (অথবা cloud-platform স্কোপ, যা সমস্ত Google Cloud পরিষেবা অন্তর্ভুক্ত করে) থাকে না। সাধারণত, আপনি যাচাইকরণের সময় scopes প্যারামিটার কাস্টমাইজ করলে (যেমন, ee.Authenticate(scopes=[...])-এ শুধুমাত্র Earth Engine স্কোপ প্রদান করা) অথবা আগে থেকে থাকা ক্রেডেনশিয়াল সেই স্কোপ ছাড়া তৈরি করা হলে, এমনটি ঘটে।

এই সমস্যার সমাধান করার দুটি উপায় আছে:

  • ডিফল্ট স্কোপের মাধ্যমে আবার যাচাই করুন: Earth Engine-এর ডিফল্ট ক্রেডেনশিয়ালে cloud-platform স্কোপ অন্তর্ভুক্ত থাকে, যার মধ্যে Cloud Storage ও BigQuery দু'টিই পড়ে। ডিফল্ট সেটিংস ব্যবহার করে আবার যাচাই করুন:
    • Python-এ: ee.Authenticate(force=True)
    • কমান্ড লাইনে: earthengine authenticate --force
  • প্রয়োজনীয় স্কোপ অন্তর্ভুক্ত করুন: আপনার এনভায়রনমেন্টে স্কোপ কাস্টমাইজ করার প্রয়োজন হলে, আপনার scopes তালিকায় https://www.googleapis.com/auth/cloud-platform বা নির্দিষ্ট পরিষেবার স্কোপ (যেমন, Cloud Storage-এর জন্য https://www.googleapis.com/auth/devstorage.full_control বা https://www.googleapis.com/auth/devstorage.read_only অথবা BigQuery-এর জন্য https://www.googleapis.com/auth/bigquery) আছে কিনা দেখুন।

উপলভ্য স্কোপ সম্পর্কে আরও জানতে, স্কোপের বিবরণ দেখুন।

টেকনিক্যাল নোট

টেকনিক্যাল বিষয়ে আগ্রহী ব্যক্তিদের জন্য: এই আলাদা আলাদা ক্রেডেনশিয়াল তৈরি করার মেকানিজম প্রয়োজন হয় কারণ পরিচিত ও বিশ্বাসযোগ্য এনভায়রনমেন্টে ক্রেডেনশিয়াল পাস করতে হয়। উপরে উল্লেখ করা বিভিন্ন কেস সম্পর্কে এখানে একটি সংক্ষিপ্ত আলোচনা করা হল।

  • আগে একটি paste মোড ছিল যা আপনাকে যেকোনও জায়গায় পেস্ট করার জন্য একটি টোকেন দিত এবং এটি খুব ঝুঁকিপূর্ণ বলে মনে করা হয়েছিল এবং এটি আর উপলভ্য নেই।
  • colab: auth.authenticate_user() আপনাকে "Colab" অথ ক্লায়েন্ট, নোটবুক এনভায়রনমেন্টের সাথে ক্রেডেনশিয়াল শেয়ার করার জন্য প্রম্পট করবে। এগুলি তারপরে google.auth.default()-এর মাধ্যমে উপলভ্য হয় এবং ee.Initialize() ব্যবহার করে।
  • localhost: আপনার লোকাল মেশিনের কোনও পোর্টে ব্রাউজার থেকে ক্রেডেনশিয়াল পাস করা হয়। এই পরিস্থিতিতে, এন্ড-টু-এন্ড নিরাপত্তা নির্ভর করে আপনার লোকাল মেশিন হ্যাক করা হয়েছে কিনা তার উপর। আপনি যে অথ ক্লায়েন্ট দেখতে পাবেন সেটি হল "Earth Engine Authenticator"।
  • gcloud: এটি gcloud রেফারেন্সে বর্ণিত --launch-browser ফ্লো ব্যবহার করে এবং --no-launch-browser রিমোট মেশিনে থাকলে। ব্যবহৃত অথ ক্লায়েন্ট হল "Google Auth Library."
  • notebook: আমরা আপনার কাজের জন্য বিশেষভাবে একটি নতুন অথ ক্লায়েন্ট তৈরি করি - আপনি সম্মতি পৃষ্ঠায় আপনার ইমেল আইডি দেখতে পাবেন। এই ক্লায়েন্টকে "ডেভেলপমেন্ট" মোডে সেট করা হয়েছে, এটি একটি বিশেষ কেস যা পুরনো পেস্ট মোড টোকেনকে অনুমতি দেয়। এর জন্য আমাদের আপনার নিজস্ব প্রোজেক্ট ব্যবহার করতে হবে, কারণ এই ধরনের ক্লায়েন্ট অনেক বেশি সংখ্যক ব্যবহারকারীর সাথে শেয়ার করা যায় না।