اجسام موتور زمین

اکنون که با جاوا اسکریپت راحت هستید، یاد بگیرید که چگونه اشیاء جاوا اسکریپت و موارد اولیه را در ظروف 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() فقط یک رشته روی کلاینت است، آرگومان دوم در واقع به سرور ارسال می شود تا ارزیابی شود، سپس برگردانده می شود.

اعداد

از 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 برای پردازش آن استفاده کنید. در این مثال، شما نمی توانید از Math.log() جاوا اسکریپت برای پردازش آن شی Earth Engine استفاده کنید. شما باید از روش معادل تعریف شده برای ee.Number استفاده کنید.Number:

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

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

در این مثال، log() متدی برای یک شی ee.Number است. (از تب Docs در سمت چپ ویرایشگر کد استفاده کنید تا لیستی از تمام روش‌ها را برای هر نوع شیء موتور زمین ببینید، به عنوان مثال 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 Engine Earth مهم است. یک 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() مفید هستند. برای اطلاعات بیشتر در مورد مرتب سازی مجموعه ها، به این بخش از صفحه شروع به کار مراجعه کنید.

Digression: عبور پارامترها بر اساس نام

آرگومان های متدهای 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 بیشتر بیاموزید.