اشیای Earth Engine

اکنون که با جاوا اسکریپت آشنا شده‌اید، یاد بگیرید که چگونه اشیاء و عناصر اولیه جاوا اسکریپت را در محفظه‌های Earth Engine قرار دهید تا به سرور ارسال شوند و در Google پردازش شوند.

رشته‌ها

برای مثال، رشته‌ای را تعریف کنید، سپس آن را در محفظه ee.String() قرار دهید تا به Earth Engine ارسال شود:

ویرایشگر کد (جاوا اسکریپت)

// Define a string, then put it into an EE container.
var aString = 'To the cloud!';
var eeString = ee.String(aString);
print('Where to?', eeString);

ee.Thing را به‌عنوان ظرفی برای چیزی که در سرور وجود دارد درنظر بگیرید. در این مثال، ابتدا رشته تعریف می‌شود، سپس در محفظه قرار می‌گیرد. همچنین می‌توانید ظرف و محتویات آن را به‌طور هم‌زمان تعریف کنید. برای مثال:

ویرایشگر کد (جاوا اسکریپت)

// Define a string that exists on the server.
var serverString = ee.String('This is on the server.');
print('String on the server:', serverString);

اگرچه اولین آرگومان print() فقط یک رشته در مشتری است، آرگومان دوم درواقع برای ارزیابی به سرور ارسال می‌شود و سپس برگردانده می‌شود.

Numbers

از ee.Number() برای ایجاد اشیای عددی در سرور استفاده کنید. برای مثال، از روش جاوا اسکریپت Math.E برای ایجاد مقدار ثابت در سرور استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

// Define a number that exists on the server.
var serverNumber = ee.Number(Math.E);
print('e=', serverNumber);

روش‌های ee.String() و ee.Number() سازنده هستند. سازنده آرگومان خود (و احتمالاً پارامترهای دیگر) را می‌گیرد، آن را در ظرفی قرار می‌دهد، و ظرف و محتویات آن را به‌عنوان شیء Earth Engine برمی‌گرداند که می‌توانید آن را در کدتان دستکاری کنید. هر سازنده‌ای که با ee شروع شود یک شیء Earth Engine برمی‌گرداند.

روش‌های مربوط به اشیای Earth Engine

توجه داشته باشید که پس‌از ایجاد شیء Earth Engine، باید از روش‌های Earth Engine برای پردازش آن استفاده کنید. در این مثال، نمی‌توانید از Math.log() جاوا اسکریپت برای پردازش آن شیء Earth Engine استفاده کنید. باید از روش معادل تعریف‌شده برای ee.Number استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

// Use a built-in function to perform an operation on the number.
var logE = serverNumber.log();
print('log(e)=', logE);

در این مثال، log() روشی برای شیء ee.Number است. (از برگه «اسناد» در سمت چپ ویرایشگر کد استفاده کنید تا فهرستی از همه روش‌ها را برای هر نوع شیء Earth Engine ببینید، برای مثال ee.Number > log()). توجه داشته باشید که روش‌های اشیاء Earth Engine اشیاء Earth Engine دیگری را برمی‌گردانند.

فهرست‌ها

برای تبدیل فهرست جاوا اسکریپت به شیء ee.List در سرور، می‌توانید یک لیترال جاوا اسکریپت را در محفظه‌ای مانند اعداد و رشته‌ها قرار دهید. ‫Earth Engine همچنین روش‌های راحتی را در سمت سرور برای ایجاد توالی اعداد ارائه می‌دهد. برای مثال:

ویرایشگر کد (جاوا اسکریپت)

// Make a sequence the hard way.
var eeList = ee.List([1, 2, 3, 4, 5]);
// Make a sequence the easy way!
var sequence = ee.List.sequence(1, 5);
print('Sequence:', sequence);

ازآنجایی‌که اشیای ee.List فقط در سرور وجود دارند، از توابع ارائه‌شده Earth Engine برای تعامل با آن‌ها استفاده کنید. برای مثال، برای خارج کردن چیزی از فهرست، از روش get() شیء ee.List استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

// Use a method on an ee.List to extract a value.
var value = sequence.get(2);
print('Value at index 2:', value);

پخش محتوا

گاهی اوقات، Earth Engine نوع شیء برگردانده‌شده از یک روش را نمی‌داند. شما به‌عنوان برنامه‌نویس می‌دانید که متغیر value در مثال قبلی یک شیء عددی است. اما اگر سعی کنید از روش add() ee.Number استفاده کنید، خطایی مانند زیر دریافت خواهید کرد:

این مورد در تابع get() رایج است که می‌تواند انواع مختلفی از اشیای Earth Engine را برگرداند. برای اصلاح آن، از سازنده ee.Number برای تبدیل نتیجه استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

// Cast the return value of get() to a number.
print('No error:', ee.Number(value).add(3));

واژه‌نامه‌

می‌توانید یک Dictionary Earth Engine را از یک شیء جاوا اسکریپت بسازید، مانند رشته‌ها، اعداد و فهرست‌ها. در زمان ساخت، می‌توانید از عملکرد جاوا اسکریپت برای مقداردهی اولیه شیء Earth Engine استفاده کنید. در این مورد، ee.Dictionary مستقیماً از شیء تحت‌اللفظی جاوا اسکریپت ساخته می‌شود:

ویرایشگر کد (جاوا اسکریپت)

// Make a Dictionary on the server.
var dictionary = ee.Dictionary({
  e: Math.E,
  pi: Math.PI,
  phi: (1 + Math.sqrt(5)) / 2
});

// Get some values from the dictionary.
print('Euler:', dictionary.get('e'));
print('Pi:', dictionary.get('pi'));
print('Golden ratio:', dictionary.get('phi'));

// Get all the keys:
print('Keys: ', dictionary.keys());

در این مثال، توجه داشته باشید که وقتی ee.Dictionary دارید، باید از روش‌های موجود در ee.Dictionary برای دریافت مقادیر استفاده کنید (برخلاف واژه‌نامه جاوا اسکریپت در درس قبلی). به‌طور مشخص، get(key) مقدار منسوب به key را برمی‌گرداند. ازآنجایی‌که نوع شیء برگردانده‌شده توسط get() می‌تواند هر چیزی باشد، اگر می‌خواهید کاری غیراز چاپ کردن روی شیء انجام دهید، باید آن را به نوع مناسب تبدیل کنید. همچنین توجه داشته باشید که روش keys() ee.List را برمی‌گرداند.

تاریخ‌ها

اشیاء تاریخ روشی است که Earth Engine زمان را نشان می‌دهد. همان‌طور که در مثال‌های قبلی دیدیم، مهم است که بین شیء Date جاوا اسکریپت و شیء ee.Date Earth Engine تمایز قائل شویم. یک ee.Date را از یک رشته، از یک Date جاوا اسکریپت، یا بااستفاده از روش‌های ایستا ارائه‌شده توسط کلاس ee.Date بسازید. (برای جزئیات، بخش «تاریخ» را در برگه «سندنگار» ببینید). این مثال ساخت تاریخ‌ها را از رشته‌ها یا تاریخ جاوا اسکریپت که نشان‌دهنده میلی‌ثانیه‌ها از نیمه‌شب ۱ ژانویه ۱۹۷۰ است نشان می‌دهد:

ویرایشگر کد (جاوا اسکریپت)

// Define a date in Earth Engine.
var date = ee.Date('2015-12-31');
print('Date:', date);

// Get the current time using the JavaScript Date.now() method.
var now = Date.now();
print('Milliseconds since January 1, 1970', now);

// Initialize an ee.Date object.
var eeNow = ee.Date(now);
print('Now:', eeNow);

تاریخ‌ها برای فیلتر کردن مجموعه‌ها مفید هستند، به‌ویژه به‌عنوان آرگومان‌های روش filterDate(). برای اطلاعات بیشتر درباره مرتب‌سازی مجموعه‌ها، این بخش از صفحه «شروع به کار» را ببینید.

انحراف: ارسال پارامترها براساس نام

آرگومان‌های روش‌های Earth Engine را می‌توان به‌ترتیب ارسال کرد، برای مثال برای ایجاد ee.Date از سال، ماه، و روز، می‌توانید پارامترهای روش ایستا fromYMD() را به‌ترتیب سال، ماه، و روز ارسال کنید:

ویرایشگر کد (جاوا اسکریپت)

var aDate = ee.Date.fromYMD(2017, 1, 13);
print('aDate:', aDate);

همچنین می‌توانید پارامترها را براساس نام و با هر ترتیبی ارسال کنید. اگرچه ممکن است کد بیشتری باشد، اما می‌تواند خوانایی و قابلیت استفاده مجدد را بهبود بخشد. برای ارسال پارامترها براساس نام، یک شیء جاوا اسکریپت را ارسال کنید که در آن کلیدهای شیء نام پارامترهای روش و مقادیر آرگومان‌های روش هستند. برای مثال:

ویرایشگر کد (جاوا اسکریپت)

var theDate = ee.Date.fromYMD({
  day: 13,
  month: 1,
  year: 2017
});
print('theDate:', theDate);

توجه داشته باشید که نام‌های ویژگی‌های شیء (کلیدها) با نام‌های مشخص‌شده در ee.Date.fromYMD() docs مطابقت دارند. همچنین توجه داشته باشید که شیء ارسال‌شده به‌عنوان آرگومان را می‌توان در متغیری برای استفاده مجدد ذخیره کرد، همان‌طور که در نمونه شیء جاوا اسکریپت نشان داده شده است.

اکنون به اندازه کافی با جاوا اسکریپت آشنا شده‌اید تا بتوانید استفاده از Earth Engine را شروع کنید! برای توضیح دقیق‌تر درباره تفاوت اشیاء JavaScript و Earth Engine، به صفحه Client vs. Server مراجعه کنید.

در بخش بعدی، درباره مفاهیم برنامه‌نویسی تابعی بیشتر بدانید تا بتوانید به‌طور مؤثر از حلقه‌های for، شرط‌های if/else، و تکرارها در Earth Engine استفاده کنید.