সাধারণ প্রশ্ন
আমার একটি সমস্যা হয়েছে, আমার সাহায্য প্রয়োজন!
এই গাইডলাইন মেনে প্রশ্ন পোস্ট করুন, যত বেশি সম্ভব তথ্য দিন (দেখুন ভাল প্রশ্ন জিজ্ঞাসা করার জন্য Stack Overflow গাইড)। এর অর্থ সাধারণত:
কোড এডিটরে স্ক্রিপ্টের লিঙ্ক পাঠানো (এটি পেতে "লিঙ্ক পান" বোতামে ক্লিক করুন)
স্ক্রিপ্ট চালানোর জন্য কোনও অ্যাসেট শেয়ার করা প্রয়োজন
সম্পূর্ণ না হওয়া ব্যাচ টাস্কের ক্ষেত্রে, সম্পূর্ণ না হওয়া টাস্কের আইডি রিপোর্ট করুন। টাস্ক আইডি দেখতে এইরকম হয়:
4C25GIJBMB52PXTEJTF4JLGL. এগুলি কোড এডিটরের টাস্ক ট্যাবে পাওয়া যাবে। আরও জানুন।
Earth Engine-এর আর্কিটেকচার সম্পর্কে আমি কোথায় পড়তে পারি?
এই পেপারটি দেখুন: Gorelick et al. 2017.
Google-এর তৈরি করা নয় এমন কোনও Earth Engine টিউটোরিয়াল কি সাজেস্ট করা হয়?
EDU এবং ট্রেনিং রিসোর্স পৃষ্ঠা দেখুন।
রিমোট সেন্সিংয়ের জন্য কি কোনও টিউটোরিয়াল সাজেস্ট করা হয়?
উজ্জ্বল গান্ধীর এই ফ্রি EE কোর্স দেখুন, যার মধ্যে রিমোট সেন্সিংয়ের ভূমিকা সহ একটি ভিডিও রয়েছে।
Earth Engine প্রোগ্রামিং
সাধারণ কোডিং সমস্যাগুলি কী কী?
ডিবাগিং গাইড দেখুন।
আমি "... কোনও ফাংশন নয়" সমস্যা কেন পাচ্ছি?
কল করা পদ্ধতি Earth Engine খুঁজে না পেলে এই সমস্যা হয়। নিম্নলিখিত সাধারণ কারণগুলি চেক করুন:
বানান বা ছোট ও বড় হাতের অক্ষর: মেথড কেস-সেনসিটিভ হয়। API রেফারেন্স-এর সাথে বানান যাচাই করুন।
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
টাইপ কাস্ট করা নেই: .get()-এর মতো ফাংশন থেকে পাওয়া ভ্যালু হল
জেনারেটিক ee.ComputedObject ইনস্ট্যান্স এবং এগুলিকে স্পষ্টভাবে কাস্ট করতে হবে। অজানা অবজেক্ট টাইপ কাস্টিং দেখুন।
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
ক্লায়েন্ট ও সার্ভার পদ্ধতি মিশিয়ে ব্যবহার করা: Earth Engine
অবজেক্টে স্ট্যান্ডার্ড
JavaScript বা Python পদ্ধতি (যেমন .push() বা .append()) ব্যবহার করছেন না তা নিশ্চিত করুন। ক্লায়েন্ট ও সার্ভার ফাংশন একসাথে ব্যবহার করা এড়িয়ে চলুন দেখুন।
Error: list.push(4) or list.append(4) -> Correct: list.add(4)
উপলভ্য নয় এমন পদ্ধতি: অবজেক্টটি সঠিকভাবে টাইপ করা হলে এবং পদ্ধতিটি ডকুমেন্টেশনে থাকলে অথবা আগে কাজ করলেও এখন কাজ না করলে, বাগ সম্পর্কে অভিযোগ জানান।
আমি কেন ee.Image("image") * 2-এর মতো সাধারণ অঙ্ক করতে পারছি না?
EE-তে সার্ভার-সাইড ও ক্লায়েন্ট-সাইড অবজেক্ট বা অপারেশন মিশিয়ে দেওয়া উচিত নয়। EE অবজেক্টের উপর করা সব অপারেশন সার্ভার-সাইডে পারফর্ম করা হয়। ক্লায়েন্ট-সাইড কম্পিউটেশন আপনার উদ্দেশ্য পূরণ করবে না। আরও বিবরণের জন্য এই পৃষ্ঠা দেখুন।
আমি কীভাবে for লুপ বা if/else স্টেটমেন্ট ব্যবহার করতে পারি?
Earth Engine প্রোগ্রামিং একটি কার্যকরী ভাষা ব্যবহার করে করা হয়, তাই
লুপ এবং কন্ডিশনাল অপারেশনগুলিকে সমতুল্য
ধারণা যেমন map বা filter ব্যবহার করে প্রকাশ করা উচিত। আরও বিবরণের জন্য এই পৃষ্ঠা
দেখুন।
আমার ছবি বা ভিডিওতে কীভাবে টেক্সট লেবেল দেখাব?
টেক্সট লেবেলের জন্য কোনও বিল্ট-ইন সহায়তা নেই, তবে আপনি এগুলি করতে পারেন:
- থার্ড-পার্টি JS প্যাকেজ ব্যবহার করুন। উদাহরণ দেখুন
- থার্ড-পার্টি Python প্যাকেজ geemap ব্যবহার করুন।
- EE QGIS প্লাগ-ইন ব্যবহার করে EE ছবি QGIS-এ নিয়ে আসুন
আমি কি কিছু স্ট্যান্ডার্ড কালার প্যালেট ব্যবহার করতে পারি?
থার্ড-পার্টি JS প্যাকেজ ee-palettes ব্যবহার করুন।
Earth Engine ব্যবহার করে এমন ওয়েবসাইট আমি কীভাবে তৈরি করব?
প্রাথমিক অ্যাপ্লিকেশনের জন্য Earth Engine অ্যাপ ব্যবহার করুন। আরও জটিল ক্ষেত্রে, আপনি EE-চালিত App Engine অ্যাপ তৈরি করতে পারেন।
ম্যাপ আইডি কীভাবে কাজ করে?
ম্যাপ আইডি (পুরো API জুড়ে mapid বলা হয়) হল এমন কী যা ক্লায়েন্টকে
ম্যাপ টাইল ফেচ করার অনুমতি দেয়। getMapId এন্ডপয়েন্টে
ইমেজ এক্সপ্রেশন প্রদান করে প্রতিটি আইডি একটি হ্যাশ তৈরি করা হয়। এর ফলে যে আইডি তৈরি হয়, তা হল কী যা
ইমেজ এক্সপ্রেশন ও ব্যবহারকারীর ক্রেডেনশিয়াল, দু'টিকেই পয়েন্ট করে। এগুলি পরে
টাইল জেনারেট করার জন্য ব্যবহার করা হবে।
ম্যাপ টাইল অনুরোধ করার মধ্যে টাইলটির লোকেশন (x, y,
zoom) এবং mapid (ছবি ও ক্রেডেনশিয়ালের কী) উল্লেখ করা থাকে। অনেক ম্যাপ টাইল লোড করার জন্য একই
ID আবার ব্যবহার করা যেতে পারে। mapid কী
একাধিকবার ব্যবহার করার ব্যাপারে কোনও সীমা নেই, তবে কয়েক ঘণ্টা পরে সেটির মেয়াদ শেষ হয়ে যায়। আমরা নির্দিষ্ট
সময়সীমা প্রকাশ করি না যে সেগুলি কতদিন ধরে থাকে, তবে আপনার লেখা যেকোনও কোডকে
আইডি এক্সপায়ার হওয়ার ব্যাপারে স্থিতিশীল হতে হবে।
এইসব আইডি তৈরি করার জন্য অল্প পরিমাণে ডেটা স্টোর করতে হয় এবং
ক্রেডেনশিয়াল যাচাই করতে হয়, তাই যত বেশি সম্ভব এগুলি আবার ব্যবহার করাই ভাল। getMapId এন্ডপয়েন্টের সাথে নির্দিষ্টভাবে যুক্ত কোনও API
কোটা নেই, কিন্তু কোনও ওয়ার্কফ্লো
যদি mapid অবজেক্ট তৈরি করার সাথে যুক্ত থাকে এবং সেই অবজেক্ট তৈরি করার হার যদি
টাইলের ডেটা ফেচ করার হারের কাছাকাছি হয়, তাহলে সম্ভবত কিছু ভুল হচ্ছে। এইসব আইডি সরানোর, তালিকাভুক্ত করার বা ম্যানেজ করার জন্য Earth Engine-এর কোনও API
এন্ডপয়েন্ট নেই, কারণ এগুলি হল ক্ষণস্থায়ী
রিসোর্স।
ee.Algorithms.If() কেন ট্রু ও ফলস, দুটি কেসই প্রিন্ট করে?
function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());
If() অ্যালগরিদমটি Earth Engine-এর অন্যান্য অ্যালগরিদমের মতোই কাজ করে।
এর সমস্ত আর্গুমেন্টকে অ্যালগরিদমটি রান করার আগে মূল্যায়ন করতে হয়।
অ্যালগরিদম trueCase ও falseCase, দুটি ফলাফলই পায় এবং তারপর condition আর্গুমেন্টের উপর ভিত্তি করে
একটি বেছে নেয় ও রিটার্ন করে, কিন্তু সেইসব ভ্যালুকে অ্যালগরিদমে প্রথম
বার পাস করার জন্য দুটি পাথই এক্সিকিউট করতে
হয়।
আমি "অনুরোধের পেলোড সাইজ সীমা অতিক্রম করেছে" সমস্যাটি পেয়েছি
আপনি Earth Engine-এ খুব বড় অনুরোধ পাঠানোর চেষ্টা করছেন। এটি সাধারণত তখন ঘটে যখন কোডটি অনেক ক্লায়েন্ট-সাইড 'for' লুপ ব্যবহার করে বা অনেক জ্যামিতি অবজেক্ট থেকে একটি FeatureCollection তৈরি করে। পরের ক্ষেত্রে, আপনার স্ক্রিপ্টে এই ধরনের জ্যামিতি তৈরি করার পরিবর্তে, সেগুলি সহ একটি CSV ফাইল তৈরি করুন এবং টেবিল অ্যাসেটে এটি আপলোড করুন।
ee.Image.clip() ও ee.Filter.bounds()-এর মধ্যে পার্থক্য কী?
এই GIS Stack Exchange থ্রেড দেখুন।
ee.Image.clip() ফাংশন এমন পিক্সেল মাস্ক করে দেয়
যেগুলি প্রদত্ত ee.Geometry বা ee.Feature-এর সাথে ইন্টারসেক্ট করে না, এর ফলে সেগুলি
ভিজ্যুয়ালাইজেশনে ট্রান্সপারেন্ট হয়ে যায় এবং কম্পিউটেশন থেকে বাদ পড়ে যায়। আপনি
এটি কোনও ছবি থেকে পিক্সেল কেটে বাদ দেওয়া হিসেবে কল্পনা করতে পারেন।
ee.Filter.bounds()
ফাংশনটি ee.Geometry বা ee.Feature-এর সাথে
ইমেজ ইন্টারসেকশনের উপর ভিত্তি করে ee.ImageCollection থেকে ee.Image অবজেক্ট ফিল্টার করে। এটি কোনও প্রদত্ত অঞ্চলের সাথে ইন্টারসেক্ট করা ছবিগুলিতে
বিশ্লেষণের স্কোপ সীমিত করতে ব্যবহৃত হয়,
যা এক্সপ্রেশন অপ্টিমাইজ করতে সাহায্য করে।
প্রতিটি পিক্সেলের জন্য একটি ফিচার সহ কীভাবে ইমেজ পিক্সেলকে ফিচার কালেকশনে কনভার্ট করা যায়?
ee.Image.sample() ফাংশন ব্যবহার করুন। ফাংশনের API-তে ব্যবহারের উদাহরণ দেখুন
রেফারেন্স পৃষ্ঠা।
ee.ImageCollection.merge() ও ee.ImageCollection.combine()-এর মধ্যে পার্থক্য কী?
ee.ImageCollection.merge()
ফাংশন দুটি কালেকশনের সব ছবিকে একটি কালেকশনে মার্জ করে,
তাদের নিজ নিজ ছবিতে একই ধরনের ব্যান্ড, মেটাডেটা,
CRS বা স্কেল আছে কিনা তা নির্বিশেষে। এটি হল দুটি সংগ্রহের মিলন। combine() পদ্ধতি
দুটি কালেকশন থেকে একই ধরনের ছবির ব্যান্ডকে একটি
কালেকশনে একত্রিত করে। ম্যাচ করা ছবি একই আইডি (system:index প্রপার্টি) শেয়ার করে। এটি হল
ইমেজ আইডির উপর ভিত্তি করে দুটি সংগ্রহের একটি ইন্টার্নাল জয়েন, যেখানে মিলে যাওয়া
ইমেজ থেকে ব্যান্ডগুলিকে একত্রিত করা হয়। মিলে যাওয়া ছবির ক্ষেত্রে, সেকেন্ডারি ছবির ব্যান্ডগুলি
প্রাইমারি ছবির সাথে যুক্ত করা হয় (ওভাররাইট করা ঐচ্ছিক)। ম্যাচ করা কোনও ছবি না থাকলে, খালি কালেকশন ফেরত দেওয়া হয়।
একাধিক তারিখের ব্যবধানের ভিত্তিতে কীভাবে ছবির সংগ্রহ ফিল্টার করতে হয়?
এই GIS Stack Exchange থ্রেড দেখুন।
merge() একাধিক সংগ্রহ একসাথে অথবা ee.Filter.or() ব্যবহার করুন।
কোনও নির্দিষ্ট পয়েন্টের চারপাশে কীভাবে বাউন্ডিং বক্স তৈরি করতে হয়?
// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);
// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
var box = feature.buffer(30000).bounds();
return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);
Data Catalog
আপনি কি ডেটাসেট X যোগ করতে পারবেন?
ডেটাসেট অনুরোধ সংক্রান্ত নির্দেশিকা অনুসরণ করে ডেটাসেট অনুরোধ সংক্রান্ত বাগ ফাইল করুন।
এছাড়াও, আপনি Earth Engine হোম ফোল্ডারে ডেটা আপলোড করতে পারবেন। রাস্টার ডেটা ইমপোর্ট করা এবং টেবিল ডেটা ইমপোর্ট করা দেখুন।
আগে থেকে থাকা ডেটাসেটের নতুন ভার্সন আছে
ডেটাসেট সংক্রান্ত অনুরোধের নির্দেশিকা অনুসরণ করে ডেটাসেট সংক্রান্ত সমস্যার ব্যাপারে অভিযোগ জানান, এবং উল্লেখ করুন যে আপনি ডেটাসেট আপডেট করার অনুরোধ করছেন।
আগে থেকে থাকা কোনও ডেটাসেট আপডেট করা হয়নি বা এতে অ্যাসেট নেই
কোনও সমস্যার ব্যাপারে অভিযোগ জানানোর আগে, সম্ভব হলে যাচাই করে নিন যে বেছে নেওয়া অ্যাসেট সত্যিই ডেটাসেট প্রদানকারীর সাইটে আছে কিনা। আরও বিবরণের জন্য হারিয়ে যাওয়া ছবি সংক্রান্ত গাইড দেখুন।
আপনি যদি ImageCollection ফিল্টার করে কোনও অ্যাসেট খুঁজছেন, তাহলে
আপনার ফিল্টার যেন খুব বেশি সীমাবদ্ধ না হয় তা নিশ্চিত করুন।
বিশেষ করে, মনে রাখবেন যে:
Sentinel-2 SR (লেভেল ২ ডেটা) ESA-এর মাধ্যমে প্রাথমিক লেভেল 1 সিনেমার জন্য তৈরি করা হয়নি।
২০০০ সালের আগে Landsat-এর কভারেজ সারা বিশ্ব জুড়ে ছিল না।
আগে থেকে থাকা ডেটাসেটে ভুল ভ্যালু আছে
ডেভেলপার ফোরামে পোস্ট করুন। এমন একটি স্ক্রিপ্ট যোগ করুন যা অ্যাসেটের আসল রেজোলিউশনে জুম করে এবং কোন মানগুলি ভুল তা স্পষ্টভাবে দেখতে সাহায্য করে। আপনি ঠিক কোথায় বিকল্প মানটি লক্ষ্য করেছেন তা ব্যাখ্যা করুন।
আমি আর কোথায় ডেটাসেট সম্পর্কে প্রশ্ন করতে পারি?
NASA ডেটাসেট সম্পর্কে প্রশ্ন থাকলে, NASA Earth Data ফোরাম দেখুন।
Copernicus ডেটাসেটে টুলবক্সের অপারেশন সংক্রান্ত প্রশ্নের জন্য, S1, S2 এবং S3 ফোরাম দেখুন।
EE ক্যাটালগ কত বড়?
অক্টোবর ২০২৩ পর্যন্ত, ক্যাটালগে ১০০০টিরও বেশি ডেটাসেট রয়েছে। ডিস্কে এর সাইজ ৯০ পেটাবাইটের বেশি (লসলস কম্প্রেশন বিবেচনা করার পরে)।
EE-তে ডেটা কত ঘন ঘন আপডেট করা হয়?
সাধারণত, সব চলমান ডেটাসেট অন্তত প্রতিদিন আপডেট করা হয় (যদিও এই ধরনের সব ডেটাসেটে প্রতিদিন নতুন ডেটা থাকে না)। কিছু ডেটাসেট দিনে একাধিকবার আপডেট করা হয়। তবে, ক্যাটালগে সবচেয়ে সাম্প্রতিক অ্যাসেট আছে কিনা তা নিশ্চিত করার জন্য কোনও নীতি নেই।
আমি কীভাবে EE ক্যাটালগের কন্টেন্ট প্রোগ্রাম্যাটিক উপায়ে দেখব?
ডেটা সেটের তালিকা STAC ফর্ম্যাটে
Google Cloud Storage বাকেটে gs://earthengine-stac এক্সপোর্ট করা হয়।
এন্ট্রি ফাইল হল
catalog.json.
আমি কি বিশ্লেষণের জন্য Google Maps ডেটা বা ছবি ব্যবহার করতে পারি?
Google, বিশ্লেষণের জন্য বেজম্যাপ ডেটা লাইসেন্স বা বিক্রি করে না।
কোনও অ্যাসেট ইনজেস্ট করার তারিখ আমি কীভাবে খুঁজে পাব?
'system:version' অ্যাসেট প্রপার্টি হল ইনজেশন টাইমস্ট্যাম্প, যা
Unix epoch থেকে মাইক্রোসেকেন্ড হিসেবে ফর্ম্যাট করা হয়। এখানে একটি উদাহরণ দেওয়া হল যা Landsat ছবির ইনজেশন
টাইমস্ট্যাম্পকে মানুষের পড়ার উপযুক্ত ফর্ম্যাটে পরিবর্তন করে।
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));
Earth Engine ক্যাটালগে কি JSON-LD মেটাডেটা আছে?
হ্যাঁ, JSON-LD মেটাডেটা ক্যাটালগ HTML পৃষ্ঠায় এম্বেড করা থাকে। যেমন, Sentinel-2 পৃষ্ঠায় নিম্নলিখিত ব্লক রয়েছে:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Earth Engine Data Catalog",
"item": "https://developers.google.com/earth-engine/datasets"
},{
"@type": "ListItem",
"position": 2,
"name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
"item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
}]
}
</script>
Landsat
simpleComposite অ্যালগরিদম কীভাবে প্রয়োগ করা হয়?
সার্ভার-সাইড প্রয়োগ এই জাভাস্ক্রিপ্ট কোডের সমতুল্য।
Landsat সারফেস রিফ্লেক্ট্যান্স ডেটা থেকে আমি কীভাবে মেঘমুক্ত কম্পোজিট তৈরি করতে পারি?
Landsat Level 2 (সারফেস রিফ্লেক্ট্যান্স) ডেটাতে বেশ কিছু কোয়ালিটি ব্যান্ড আছে যেগুলি মেঘ ও অন্যান্য অবাঞ্ছিত ইমেজ আর্টিফ্যাক্ট মাস্ক করার জন্য ব্যবহার করা যেতে পারে। Landsat 8 SR ছবি প্রসেস করতে এবং মেঘমুক্ত কম্পোজিট তৈরি করতে এইসব ব্যান্ড ব্যবহার করার একটি উদাহরণ এই GIS Stack Exchange পোস্টে দেওয়া আছে। একই পদ্ধতি ব্যবহার করে ডেভেলপার গাইডেতত্ত্বাবধানে পরিচালিত শ্রেণীবিভাগ সংক্রান্ত উদাহরণে ব্যবহারের জন্য মেঘমুক্ত কম্পোজিট তৈরি করা হয়।
ক্রস-সেন্সর Landsat সারফেস রিফ্লেক্ট্যান্স হারমোনাইজেশন কি প্রয়োজন?
Roy et al., ২০১৬ সালে Landsat 7-8 TOA এবং পৃষ্ঠের প্রতিফলনের মধ্যে প্রতিফলনের পার্থক্য বিশ্লেষণ করা হয়েছিল। তারা OLS এবং RMA কোয়েফিসিয়েন্ট প্রকাশ করেছে যাতে পাঠকরা একটি সেন্সরের ডেটার রিফ্লেক্ট্যান্স ভ্যালুকে অন্যটিতে ট্রান্সফর্ম করতে পারে। কাগজের শেষ লাইন বলেছে: "যদিও সেন্সরের পার্থক্য খুবই কম, তবে Landsat ডেটা অ্যাপ্লিকেশনের উপর নির্ভর করে এর উল্লেখযোগ্য প্রভাব থাকতে পারে।" তবে, এই বিশ্লেষণ ডেটা সংগ্রহের আগের ডেটার উপর ভিত্তি করে করা হয়েছে।
কালেকশন ১ ও কালেকশন ২-এর রিপ্রসেসিংয়ের সময় করা উন্নতিগুলি সেন্সরগুলির মধ্যে সম্পর্ককে প্রভাবিত করতে পারে, কিন্তু আমরা যতদূর জানি, কালেকশন ১ বা কালেকশন ২ ডেটার জন্য রয় ও অন্যান্য (২০১৬)-এর মতো কোনও বিশ্লেষণ করা হয়নি। কোনও আনুষ্ঠানিক বিশ্লেষণ না করা সত্ত্বেও, প্রভাবশালী Landsat ব্যবহারকারীদের মধ্যে সাধারণভাবে এই বিষয়ে সম্মতি দেখা গেছে যে কালেকশন ২, লেভেল ২ (সারফেস রিফ্লেক্ট্যান্স) ডেটার জন্য কোনও সংশোধন করার প্রয়োজন নেই। যেমন, কালেকশন ২, লেভেল ২ হারমোনাইজেশনের প্রয়োজনীয়তা সম্পর্কিত প্রশ্নের উত্তরে, Landsat সায়েন্স টিমের মাইক উল্ডার উল্লেখ করেছেন যে, আগ্রহের অ্যাপ্লিকেশন (এর মধ্যে ল্যান্ড কভার ম্যাপিং ও পরিবর্তন শনাক্তকরণ অন্তর্ভুক্ত) এবং কালেকশন ২ সারফেস রিফ্লেক্ট্যান্স প্রোডাক্টের প্রকৃতির উপর নির্ভর করে, ক্রস-সেন্সর অ্যাডজাস্টমেন্টের প্রয়োজন ছাড়াই এগুলি অত্যন্ত উপযুক্ত ও নির্ভরযোগ্য।
MSS ছবিতে মেঘ ও মেঘের ছায়া কীভাবে মাস্ক করব?
JavaScript কোড এডিটরের জন্য থার্ড-পার্টি msslib মডিউলে MSScvm অ্যালগরিদম বাস্তবায়ন করা সহ MSS ডেটা এক্সপ্লোর ও প্রস্তুত করার জন্য অন্যান্য সহায়ক ফাংশন অন্তর্ভুক্ত থাকে।
ডেটা পরিচালনা
আমার আপলোড করা ডেটার মালিকানা কার কাছে থাকে?
Earth Engine-এর পরিষেবার শর্তাবলী অনুযায়ী, গ্রাহকরা Earth Engine-এ যে ডেটা আপলোড করেন সেটির মালিকানা তাদেরই থাকে।
আমি ডেটা আপলোড করতে পারছি না!
কোড এডিটরের উপরে ডানদিকের কোণে থাকা 'টাস্ক' প্যানেলে আপলোড টাস্কের স্ট্যাটাস চেক করুন। এছাড়াও, আপনি নির্দিষ্ট টাস্ক পৃষ্ঠা দেখতে পারবেন।
কোনও টাস্ক না থাকলে, আপনি হয়ত Code Editor-এর মাধ্যমে ফাইল আপলোড করার চেষ্টা করেছেন, কিন্তু নেটওয়ার্ক সংক্রান্ত সমস্যার কারণে ফাইলটি কখনও আপলোড করা সম্পূর্ণ হয়নি, তাই টাস্ক তৈরি করা যায়নি। অন্য কোনও ব্রাউজার বা অন্য কম্পিউটার ব্যবহার করে দেখুন।
কোনও টাস্ক সম্পূর্ণ না হলে, সেটি কী সমস্যা দেখাচ্ছে তা পরীক্ষা করে দেখুন। কোনও নির্দিষ্ট
সমস্যার মেসেজ না থাকলে, প্রথমে যাচাই করে নিন যে আপনার ফাইলটি ক্ষতিগ্রস্ত নয়। এর জন্য, র্যাস্টার
ফাইলের জন্য gdalinfo অথবা ভেক্টর ফাইলের জন্য ogr2ogr
রান করান।
এইসব কমান্ড সোর্স ফাইল থেকে সব ডেটা রিড করার চেষ্টা করবে এবং
ফাইলগুলি ক্ষতিগ্রস্ত হলে সমস্যা দেখাবে।
gdalinfo কলের উদাহরণ:
gdalinfo -mm -stats -checksum file.tif
in.shp-কে out.csv-এ কনভার্ট করবে এমন ogr2ogr কলের উদাহরণ:
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
ফাইলটি বৈধ মনে হলে, ব্যর্থ টাস্ক আইডিটি টেক্সট হিসেবে (স্ক্রিনশট হিসেবে নয়)
ডেভেলপারদের মেলিং লিস্টে
পোস্ট করুন।
টাস্ক আইডির ফর্ম্যাট হল: 4C25GIJBMB52PXTEJTF4JLGL. সম্ভব হলে আপনার
সোর্স ফাইল সর্বজনীনভাবে পাঠযোগ্য করুন। এটি ব্যক্তিগত ফাইল হলে, Earth Engine টিমকে
পরীক্ষা করতে দিতে চাইলে, শুধু earthengine@google.com-এর সাথে এটি শেয়ার করুন। সোর্স ফাইল শেয়ার করা সম্ভব না হলে, অন্তত
gdalinfo -mm -stats -checksum-এর আউটপুট দিন।
Earth Engine কোনও নির্দিষ্ট প্রজেকশন কাজ না করলে, আপনাকে
আপলোড করার আগে ডেটা রিপ্রজেক্ট করতে হবে, যেমন,
gdalwarp ব্যবহার করে।
আমি কীভাবে NetCDF বা অন্য কোনও কাজ করে না এমন রাস্টার ফর্ম্যাটে ফাইল আপলোড করব?
শুধুমাত্র GeoTIFF ফাইল Earth Engine-এ আপলোড করা যায়। অন্যান্য GDAL-এর সাথে মানানসই
ফর্ম্যাটকে GeoTIFF-এ কনভার্ট করতে
gdal_translate ব্যবহার করা যেতে পারে। উদাহরণ:
gdal_translate -co COMPRESS=DEFLATE file.nc file.tif
মনে রাখবেন, কিছু NetCDF বা HDF ফাইলে একাধিক সাব ডেটাসেট থাকে যা gdalinfo-এর মাধ্যমে
ডিসকভার করা যায়। এই ক্ষেত্রে
gdal_translate কমান্ডটি এইরকম দেখাবে (মনে রাখবেন যে ডবল কোটের মধ্যে
পাথ):
gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif
NetCDF ফাইলে কখনও কখনও এমন প্রজেকশন থাকে যা GDAL শনাক্ত করতে পারে না। এই
ক্ষেত্রে, আপনাকে gdal_translate কমান্ড লাইনে
প্রজেকশন ও স্পেশিয়াল এক্সটেন্ড সেট করতে হবে। উদাহরণ:
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid
আপলোড করা GeoTIFF-এর জন্য আমি কোন কম্প্রেশন অ্যালগরিদম ব্যবহার করতে পারি?
আপলোড করার জন্য, GeoTIFF-কে DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP বা ZSTD-এর মাধ্যমে কম্প্রেস করা যেতে পারে। লাইভ COG রিডিংয়ের জন্য, আপনি DEFLATE, JPEG, LZW বা ZSTD ব্যবহার করতে পারেন। ZSTD হল একটি ভালো সামগ্রিক বিকল্প কারণ এটি দ্রুত ডিকম্প্রেস করে এবং বেশিরভাগ ছবির ভালো কম্প্রেশন অফার করে।
gdal_translate ব্যবহার করার সময় ZSTD কম্প্রেশন প্রয়োগ করতে, এইসব বিকল্প যোগ করুন। ডেটাতে
ফ্লোটিং পয়েন্ট ভ্যালু থাকলে, PREDICTOR-এর মান পরিবর্তন করে ৩ করুন।
gdal_translate in.tif out.tif \
-co COPY_SRC_OVERVIEWS=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=22 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
আমার রাস্টার ইনজেশন কয়েক দিন ধরে চলছে এবং এখনও শেষ হয়নি।
gdalinfo ব্যবহার করে, আপনার ফাইলে নিম্নলিখিত GDAL বিকল্প সেট করা আছে কিনা তা চেক করুন:
INTERLEAVE=PIXEL. এই বিকল্প ও একাধিক ব্যান্ড সহ ফাইলের ক্ষেত্রে, ইনজেশন
কখনও শেষ নাও হতে পারে কারণ এই ধরনের ফাইলের লেআউট রিড করার প্রসেসকে খুব ধীর করে দেয়।
আপলোড করার আগে এই ধরনের ফাইলকে ব্যান্ড-ইন্টারলিভড লেআউটে কনভার্ট করার চেষ্টা করুন:
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
আমার আপলোড করা রাস্টার বেজম্যাপের সাথে মিলছে না।
ডেটা যদি বেজম্যাপ থেকে সামান্য অফসেট হয়, তাহলে প্রজেকশনে সম্ভবত
ভুল ডেটাম (পৃথিবীর আকার সম্পর্কে অনুমান) আছে।
এটি বেশিরভাগ ক্ষেত্রেই
সাইনাসয়েডাল প্রোজেকশনের ক্ষেত্রে ঘটে যা GDAL মেটাডেটাতে সম্পূর্ণভাবে এনকোড করা যায় না। টার্গেট প্রজেকশন কী হওয়া উচিত তা আপনি জানলে (যেমন, MODIS সাইনুসয়েডাল প্রজেকশন
ব্যবহার করা ফাইলের জন্য SR-ORG:6974), কমান্ড-লাইন আপলোড
বা আপলোড ম্যানিফেস্টের
crs ফিল্ডের সময় --crs ফ্ল্যাগ সেট করুন।
ডেটা যদি খুব বেশি বিকৃত বা সম্পূর্ণ ভুল জায়গায় দেখানো হয়, তাহলে প্রজেকশন বা অ্যাফিন ট্রান্সফর্ম সম্ভবত ভুল।
আমার রাস্টার শুধুমাত্র পূর্ব গোলার্ধের উপরে দেখা যায়।
আপনি সম্ভবত এমন একটি গ্লোবাল রাস্টার আপলোড করেছেন যা দ্রাঘিমাংশের রেঞ্জ [0, 360] জুড়ে বিস্তৃত। তবে, Earth Engine-এর জন্য রাস্টারকে [-১৮০, ১৮০] রেঞ্জের মধ্যে থাকতে হবে। ইনজেশনের আগে রাস্টারের বাঁদিক ও ডানদিকের অংশ অদল-বদল করুন। এইসব GIS Stack Exchange সাজেশন দেখুন।
ইনজেস্ট করা আমার শ্রেণীবিভাগ সংক্রান্ত ছবিতে কেন স্পেকল দেখা যাচ্ছে?
আপনি সম্ভবত ডিফল্ট MEAN
পিরামিডিং নীতি ব্যবহার করেছেন।
ক্লাসিফিকেশন ছবির জন্য, MODE পিরামিডিং নীতি ব্যবহার করতে হবে। QA/বিটম্যাস্ক ছবির জন্য, SAMPLE পিরামিডিং নীতি ব্যবহার করতে হবে।
আমি এই সমস্যাটি দেখতে পাচ্ছি: No data value -128.0 cannot be applied to band #0 of type Short<0, 255>.
GDAL সিঙ্গেল-বাইট ব্যান্ডকে সাইন করা পূর্ণসংখ্যা হিসেবে বিবেচনা করতে পারে না, তাই এটি এই ধরনের ব্যান্ডকে আনসাইন করা পূর্ণসংখ্যা হিসেবে পড়ে। এটি নেগেটিভ কোনও ডেটা ভ্যালুর সাথে কনফ্লিক্ট করবে না।
আপনার ভ্যালু আসলে সাইন করা পূর্ণসংখ্যা হলে, ম্যানিফেস্ট আপলোড
ব্যবহার করুন এবং আপনার ফাইল থাকা টাইলের সেট বিভাগে এটি যোগ করুন: data_type: "INT8"
আপনার ভ্যালু যদি আনসাইনড পূর্ণসংখ্যা হয়, তাহলে আপনার ফাইলে ভুল nodata ভ্যালু আছে। আপনি সঠিক ডেটা ভ্যালু (বা এমন ভ্যালু যা কখনও ঘটে না,
যদি থাকে) সহ আপলোড করার সময় এটি
ওভাররাইড করতে পারবেন। এছাড়াও, আপনি gdal_translate -a_nodata ব্যবহার করে nodata
ভ্যালু পরিবর্তন করতে বা gdal_edit.py -unsetnodata ব্যবহার করে এটি সরিয়ে দিতে পারবেন।
আমি কীভাবে GeoJSON বা অন্য কোনও কাজ করে না এমন ভেক্টর ফর্ম্যাটে ফাইল আপলোড করব?
OGR-এর সাথে মানানসই ফর্ম্যাটকে CSV বা SHP-তে ট্রান্সলেট করতে ogr2ogr ব্যবহার করুন।
উদাহরণ:
or2ogr -f "ESRI Shapefile" file.shp file.kml
মনে রাখবেন, CSV আপলোডে, জিওমেট্রি কলামে GeoJSON থাকতে পারে।
আমি Python ব্যবহার করে ডেটা আপলোড করতে চাই অথবা একসাথে অনেক ফাইল আপলোড করতে চাই।
কমান্ড-লাইন আপলোড ব্যবহার করুন। এই ধরনের আপলোডের জন্য সোর্স ফাইল প্রথমে GCS (Google Cloud Storage) বাকেটে রাখতে হবে। আপনি ফ্রি টিয়ারের সীমার মধ্যে থাকলে GCS ব্যবহারের জন্য কোনও চার্জ লাগে না - প্রাইসিং পৃষ্ঠা দেখুন।
আমি অনেক টাইলে বিভক্ত একটি বড় রাস্টার মোজাইক আপলোড করতে চাই।
সব ফাইলের প্রজেকশন ও পিক্সেল সাইজ একই হলে, সেগুলিকে একসাথে একই অ্যাসেটে আপলোড করুন — সেগুলি অটোমেটিক মোজাইক করা হবে।
ফাইলগুলির প্রজেকশন বা পিক্সেল সাইজ আলাদা হলে, সেগুলিকে একটি রাস্টার অ্যাসেটে
মোজাইক করা যাবে না। পরিবর্তে, প্রতিটি টাইলকে একই ImageCollection-এ আলাদা অ্যাসেট হিসেবে আপলোড করুন
যা ImageCollection.mosaic() ব্যবহার করে মোজাইক করা যেতে পারে
আমি একটি মোজাইক আপলোড করার চেষ্টা করছি এবং ভুল টাইল সংক্রান্ত সমস্যা দেখতে পাচ্ছি।
Earth Engine-এর র্যাস্টার মোজাইকের টাইল একই প্রজেকশন ও পিক্সেল সাইজের হতে হবে। এছাড়াও, টাইলগুলি অবশ্যই পিক্সেল সীমানায় সঠিকভাবে অ্যালাইন করতে হবে।
আমি GCS বাকেট থেকে একটি ফাইল আপলোড করার চেষ্টা করছি, কিন্তু Earth Engine সেটি খুঁজে পাচ্ছে না।
আপনি হয়ত GCS-এ আপলোড করার জন্য এবং Earth Engine-এ কানেক্ট করার জন্য আলাদা আলাদা Google অ্যাকাউন্ট ব্যবহার করেছেন। Earth Engine-এ কানেক্ট করার জন্য আপনি যে অ্যাকাউন্ট ব্যবহার করেন সেটি GCS ফাইল পড়তে পারছে কিনা তা নিশ্চিত করুন। ব্রাউজার মাল্টি-লগ-ইন এই বিষয়টি বিভ্রান্তিকর করে তুললে, ছদ্মবেশী ব্রাউজার উইন্ডোতে Earth Engine-এ কানেক্ট করুন।
আমি একসাথে অনেক অ্যাসেট এক্সপোর্ট করতে চাই।
আপনাকে প্রতিটি ছবি আলাদাভাবে এক্সপোর্ট করতে হবে।
আমি একটি কমান্ডের মাধ্যমে Folder বা ImageCollection সরাতে বা মুছে দিতে চাই।
আপনাকে প্রথমে প্রতিটি অ্যাসেট সরাতে বা মুছে দিতে হবে, তারপর মূল ফোল্ডার বা সংগ্রহ সরাতে বা মুছে দিতে হবে। অনেক চাইল্ড অ্যাসেট থাকলে, সেগুলির উপর পুনরাবৃত্তি করতে একটি শেল বা Python লুপ লিখুন।
আমি EE-এর বাইরে থেকে সরাসরি Earth Engine ডেটা অ্যাক্সেস করতে চাই।
QGIS-এ একটি Earth Engine প্লাগ-ইন আছে।
GDAL-এ Earth Engine ড্রাইভার আছে।
অন্যান্য সিস্টেম EE REST API ব্যবহার করতে পারে।
আমি Earth Engine অ্যাসেটের একটি অংশ সম্পূর্ণভাবে আবার ইনজেস্ট না করেই আপডেট করতে চাই।
EE-তে আপলোড করা র্যাস্টার বা ভেক্টর ডেটা আপডেট করা যায় না। শুধুমাত্র অ্যাসেট মেটাডেটা প্রপার্টি আপডেট করা যাবে।
আমার অ্যাকাউন্টের অ্যাক্সেস আমি হারাচ্ছি। আমার অ্যাসেট নিয়ে কী করব?
মূল অ্যাকাউন্টের নীতি ডেটা ট্রান্সফার করার অনুমতি দিলে, আপনার অ্যাসেট অন্য অ্যাকাউন্টের সাথে শেয়ার করুন, তারপর নতুন অ্যাকাউন্টের মালিকানাধীন অ্যাসেট কপি করুন। সরানোর জন্য অনেক অ্যাসেট থাকলে, কমান্ড-লাইন কপি ইউটিলিটি ব্যবহার করুন।
কোনও অ্যাকাউন্ট মুছে দেওয়া হলে, সেটির মালিকানাধীন অ্যাসেট আর অ্যাক্সেস করা যায় না।
আমার এক্সপোর্ট করা ছবি ভুল জায়গায় সেভ হয়েছে।
কিছু প্রজেকশনের ক্ষেত্রে, যেমন সাইনাসয়েডাল বা কোনিক, GeoTIFF ফাইল কখনও কখনও প্রয়োজনীয় সব প্রজেকশন প্যারামিটার সেভ করতে পারে না। এর ফলে এক্সপোর্ট করা ফাইলটি ডেস্কটপ GIS টুলে দেখলে ভুল জায়গায় দেখা যায় অথবা EE-তে আবার ইনজেস্ট করা হয়।
এটি সমাধান করতে, এমন একটি এক্সপোর্ট crs প্যারামিটার নির্দিষ্ট করুন যা GeoTIFF ফাইলের সাথে ভালভাবে কাজ করে বলে জানা যায়
—যেমন, আপনার আগ্রহের বিষয় থাকা UTM জোনের জন্য EPSG কোড ব্যবহার করুন।
COG অ্যাসেট স্টোর করার জন্য কোন ক্লাউড স্টোরেজ বাকেট লোকেশন ব্যবহার করব?
আপনি কী অপ্টিমাইজ করতে চাইছেন তার উপর উত্তর নির্ভর করে। আপনি যদি কম লেটেন্সি কম্পিউটেশন অ্যাক্সেসের জন্য অপ্টিমাইজ করেন, তাহলে COG অ্যাসেট স্টোর করার জন্য সবচেয়ে ভালো GCS বাকেট লোকেশন হল US-CENTRAL*। অন্যান্য বিবেচনার ব্যাপারে তথ্য পেতে, বাকেট লোকেশন পৃষ্ঠা দেখুন।
এক্সপোর্ট করা ফিচার কালেকশন অ্যাসেট আমার সেট করা প্রপার্টি বজায় রাখে না।
কোনও Export.table.* ফাংশন আউটপুটে টেবিল-লেভেল প্রপার্টি সংরক্ষণ করে না।
অনেক আউটপুট ফর্ম্যাটের (যেমন, CSV, GeoJSON) ক্ষেত্রে, এই ধরনের
মেটাডেটা কাজ করে না। Export.table.toAsset ফাংশন টেবিল-লেভেল
প্রপার্টি সাপোর্ট করতে পারে, কিন্তু এই মুহূর্তে করে না।
CSV ফর্ম্যাট হিসেবে Drive-এ এক্সপোর্ট করা টেবিল XLSX ফর্ম্যাটে কনভার্ট করা হয়।
আপনার Google Drive সেটিংসের উপর নির্ভর করে, Earth Engine থেকে এক্সপোর্ট করা CSV টেবিলকে XLSX ফাইলে কনভার্ট করা যেতে পারে, এর ফলে ডেটা টাইপ কনভার্শনের মতো অপ্রত্যাশিত প্রভাব পড়তে পারে। পরবর্তী এক্সপোর্ট করার সময় আচরণ পরিবর্তন করতে এইসব ধাপ অনুসরণ করুন।
- ওয়েবে Google Drive-এ, উপরে ডানদিকে সেটিংস কগে ক্লিক করুন।
- 'সেটিংস' বিকল্পে ক্লিক করুন।
- স্ক্রল করে "আপলোড করা ফাইলকে Google Docs এডিটর ফর্ম্যাটে কনভার্ট করুন" বিকল্পে যান এবং সেটি মুছে দিন।
কোড এডিটর
আমি Code Editor-এ সাইন-ইন করতে পারছি না কারণ এটি আমাকে ভুল অ্যাকাউন্ট ব্যবহার করতে প্রম্পট করছে।
লগ-আউট করুন, "অ্যাকাউন্ট বেছে নিন" পৃষ্ঠায় Earth Engine ব্যবহার করার জন্য রেজিস্টার করা অ্যাকাউন্টটি বেছে নিন এবং তারপর দ্বিতীয় "Earth Engine Code Editor-এ চালিয়ে যাওয়ার জন্য অ্যাকাউন্ট বেছে নিন" পৃষ্ঠায় একই অ্যাকাউন্ট আবার বেছে নিন (ঠিক শব্দগুলি আলাদা হতে পারে)।
আমি একটি গ্লোবাল ম্যাপের স্ক্রিনশট নিতে চাই, কিন্তু Web Mercator প্রজেকশন পছন্দ করি না।
Code Editor-এ ব্যবহৃত ম্যাপ প্রজেকশন হল
ওয়েব মারকেটর
('EPSG:3857')। এটি নিরক্ষরেখা থেকে দূরে থাকা বস্তুর সাইজ বাড়িয়ে দেয়, এর ফলে
উচ্চ অক্ষাংশের অঞ্চলগুলি আসলে যতটা বড় তার থেকে অনেক বেশি বড় দেখায়,
নিরক্ষরেখার কাছাকাছি থাকা অঞ্চলের তুলনায়। আপনি Code Editor-এর ম্যাপ ক্যানভাসের প্রজেকশন পরিবর্তন করতে পারবেন না, তবে ee.Image.changeProj পদ্ধতি ব্যবহার করে আপনার
পছন্দমতো প্রজেকশনে কোনও ছবিকে Web Mercator ক্যানভাসে "পেইন্ট" করতে পারবেন।
API রেফারেন্স পৃষ্ঠা
থেকে কোড এডিটরের ম্যাপে গ্লোবাল DEM দেখানোর উদাহরণ দেখুন। এটি
রবিনসন প্রজেকশন-এ দেখানো হয়েছে।
মনে রাখবেন, এই কৌশলটি শুধুমাত্র ভিজ্যুয়ালাইজেশনের উদ্দেশ্যে ব্যবহার করা উচিত, কারণ
কোড এডিটরের ইন্সপেক্টর এবং ড্রয়িং টুল এখনও ওয়েব মারকেটরে কাজ করছে।
আমার স্ক্রিপ্ট সেভ হচ্ছে না (Script error: Unknown commit)।
স্ক্রিপ্ট সেভ করার সময় Script error: Unknown commit মেসেজ পেলে,
এর অর্থ হল আপনি যে রিপোজিটরিতে সেভ করছেন সেটি সম্ভবত সিঙ্ক করা নেই।
এই অবস্থার কারণ পরিবর্তনশীল এবং শনাক্ত করা কঠিন। সমস্যার সমাধান করতে, স্ক্রিপ্ট ট্যাবের উপরে ডানদিকের কোণে থাকা বোতাম ব্যবহার করে স্ক্রিপ্ট তালিকা রিফ্রেশ করার
চেষ্টা করুন। সেটি কাজ না করলে, স্ক্রিপ্ট ট্যাবে থাকা 'নতুন' বোতাম থেকে
নতুন রিপোজিটরি তৈরি করে সেখানে স্ক্রিপ্ট সেভ করার চেষ্টা করুন
(সিঙ্ক না হওয়া
রিপোজিটরি থেকে আপনাকে নতুন রিপোজিটরিতে স্ক্রিপ্ট সরাতে হতে পারে)।
আমি কেন কোড এডিটরে বারবার 400 এরর দেখতে পাচ্ছি?
আপনি যদি কোড এডিটরে বারবার 400 এরর দেখতে পান, তাহলে https://myaccount.google.com/connections-এ নেভিগেট করুন, অ্যাপ ও পরিষেবার তালিকায় "Earth Engine Code Editor" খুঁজে নিন, এটি বেছে নিন এবং তারপর "Earth Engine Code Editor-এর সাথে আপনার থাকা সব কানেকশন মুছে দিন" বিকল্প বেছে নিন এবং কনফার্ম করুন। তারপর কোড এডিটর খুলে আবার যাচাই করুন।
আমি কীভাবে মুছে দেওয়া স্ক্রিপ্ট ও ফোল্ডার ফিরিয়ে আনব?
আগে থেকেই থাকা রিপোজিটরির মধ্যে কোনও স্ক্রিপ্ট বা ফোল্ডার আপনি ভুলবশত মুছে দিলে, আমাদের সার্ভারে Git লগে সম্পূর্ণ কমিট ইতিহাস সংরক্ষিত থাকে। আপনি স্ট্যান্ডার্ড Git কমান্ড-লাইন টুল ব্যবহার করে লোকাল রিপোজিটরি ক্লোন করার মাধ্যমে মুছে দেওয়া স্ক্রিপ্ট বা ফোল্ডার ফিরিয়ে আনতে পারবেন।
তবে, সম্পূর্ণ রেপোজিটরি (users/username/repository) মুছে দিলে,
earthengine.googlesource.com থেকে রেপোজিটরি ও তার কমিট ইতিহাস স্থায়ীভাবে মুছে যায়
এবং এটি আর ফিরিয়ে আনা বা রিকভার করা যায় না।
Git ক্রেডেনশিয়াল তৈরি করা, আপনার রিপোজিটরি ক্লোন করা এবং মুছে দেওয়া ফাইল বা ফোল্ডার ফিরিয়ে আনা সংক্রান্ত ধাপে ধাপে নির্দেশাবলীর জন্য, স্ক্রিপ্ট রিকভারি ও রিপোজিটরি মাইগ্রেশন গাইড দেখুন।
আমি কীভাবে আমার স্ক্রিপ্ট রিপোজিটরি রুটের নাম পরিবর্তন করতে পারি?
আপনার স্ক্রিপ্ট রুট ডিরেক্টরি (users/username) আপনার আসল Earth
Engine অ্যাকাউন্ট রেজিস্ট্রেশনের সাথে যুক্ত। ব্যাকএন্ডে সরাসরি এটির নাম পরিবর্তন করা যাবে না
কারণ এটি করলে, এক্সটার্নাল স্ক্রিপ্ট বা কোলাবরেটর প্রোজেক্ট ভেঙে যাবে যেগুলি
require('users/username/repository:...') পাথ ব্যবহার করে আপনার মডিউলার কোড
ইমপোর্ট করে।
আপনার নতুন নেমস্পেসের প্রয়োজন হলে, এর জন্য কাজ করে এমন সমাধান হল আপনার কাজ নতুন অ্যাকাউন্টে মাইগ্রেট করা:
- আপনার নতুন Google পরিচয় ব্যবহার করে একটি নতুন Earth Engine অ্যাকাউন্ট রেজিস্টার করুন (যা
পরিষ্কার
users/new_usernameরুট তৈরি করে)। - আপনার পুরনো রিপোজিটরি ক্লোন করতে এবং এর সম্পূর্ণ ইতিহাস নতুন খালি রিপোজিটরিতে পুশ করতে রিপোজিটরি মাইগ্রেশন সংক্রান্ত নির্দেশাবলী অনুসরণ করুন।
গুরুত্বপূর্ণ বিষয়:
- সর্বজনীন মডিউল: আপনার যদি সর্বজনীন মডিউল থাকে যার উপর অন্যরা নির্ভর করে, তাহলে আমরা পুরনো অ্যাকাউন্ট ও রিপোজিটরি চালু রাখার জন্য অত্যন্ত সাজেস্ট করি যাতে আপনি তাদের ওয়ার্কফ্লো ভেঙে না দেন।
- ব্যক্তিগত স্ক্রিপ্ট: আপনার স্ক্রিপ্ট সম্পূর্ণ ব্যক্তিগত হলে, আপনি
নতুন রিপোজিটরি পাথের রেফারেন্স দিতে
require()ইমপোর্ট স্টেটমেন্ট আপডেট করতে এবং তারপরে নিরাপদে পুরনো রিপোজিটরি মুছে দিতে পারবেন।