عناصر Earth Engine

بعد أن أصبحت معتادًا على JavaScript، تعرَّف على كيفية وضع عناصر JavaScript وأنواع البيانات الأساسية في حاويات Earth Engine لإرسالها إلى الخادم ومعالجتها في Google.

السلاسل

على سبيل المثال، حدِّد سلسلة، ثم ضعها في الحاوية ee.String() ليتم إرسالها إلى Earth Engine:

محرّر الرموز البرمجية (JavaScript)

// 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 حاوية لعنصر متوفّر على الخادم. في هذا المثال، يتم تحديد السلسلة أولاً، ثم يتم وضعها في الحاوية. يمكنك أيضًا تحديد الحاوية ومحتوياتها دفعة واحدة. على سبيل المثال:

محرّر الرموز البرمجية (JavaScript)

// 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 JavaScript لإنشاء قيمة ثابتة على الخادم:

محرّر الرموز البرمجية (JavaScript)

// 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() من JavaScript لمعالجة كائن Earth Engine هذا. عليك استخدام الطريقة المكافئة المحدّدة لـ ee.Number:

محرّر الرموز البرمجية (JavaScript)

// 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.

القوائم

لتحويل قائمة JavaScript إلى كائن ee.List على الخادم، يمكنك وضع قيمة حرفية في JavaScript داخل حاوية، كما هو الحال مع الأرقام والسلاسل. توفّر Earth Engine أيضًا طرقًا سهلة من جهة الخادم لإنشاء تسلسلات من الأرقام. على سبيل المثال:

محرّر الرموز البرمجية (JavaScript)

// 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:

محرّر الرموز البرمجية (JavaScript)

// 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 من أجل تحويل النتيجة:

محرّر الرموز البرمجية (JavaScript)

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

قواميس

يمكنك إنشاء Dictionary في Earth Engine من عنصر JavaScript، كما هو الحال مع السلاسل والأرقام والقوائم. عند الإنشاء، يمكنك استخدام وظيفة JavaScript لتهيئة عنصر Earth Engine. في هذه الحالة، يتم إنشاء ee.Dictionary مباشرةً من عنصر حرفي في JavaScript:

محرّر الرموز البرمجية (JavaScript)

// 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 للحصول على القيم (على عكس قاموس JavaScript في الدرس السابق). على وجه التحديد، تعرض الدالة get(key) القيمة المرتبطة بالسمة key. بما أنّ نوع الكائن الذي تعرضه get() يمكن أن يكون أي شيء، إذا كنت ستنفّذ أي إجراء على الكائن غير طباعته، عليك تحويله إلى النوع الصحيح. يُرجى أيضًا ملاحظة أنّ الطريقة keys() تعرض ee.List.

التواريخ

تمثّل عناصر التاريخ الطريقة التي يعرض بها Earth Engine الوقت. كما هو الحال في الأمثلة السابقة، من المهم التمييز بين كائن Date JavaScript وكائن ee.Date في Earth Engine. أنشئ ee.Date من سلسلة أو من Date في JavaScript أو باستخدام طرق ثابتة توفّرها الفئة ee.Date. (راجِع قسم "التاريخ" في علامة التبويب المستندات للحصول على التفاصيل). يوضّح هذا المثال كيفية إنشاء تواريخ من سلاسل أو تاريخ JavaScript يمثّل المللي ثانية منذ منتصف الليل في 1 كانون الثاني (يناير) 1970:

محرّر الرموز البرمجية (JavaScript)

// 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() بالترتيب: السنة والشهر واليوم:

محرّر الرموز البرمجية (JavaScript)

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

يمكنك بدلاً من ذلك تمرير المَعلمات بالاسم، وبأي ترتيب. مع أنّ ذلك قد يتطلّب المزيد من الرموز، يمكن أن يؤدي إلى تحسين قابلية القراءة وإعادة الاستخدام. لتمرير المَعلمات حسب الاسم، يجب تمرير كائن JavaScript تكون فيه مفاتيح الكائن هي أسماء مَعلمات الطريقة والقيم هي وسيطات الطريقة. على سبيل المثال:

محرّر الرموز البرمجية (JavaScript)

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

يُرجى العِلم أنّ أسماء سمات العنصر (المفاتيح) تتطابق مع الأسماء المحدّدة في ee.Date.fromYMD() المستندات. يُرجى أيضًا ملاحظة أنّه يمكن حفظ الكائن الذي يتم تمريره كوسيطة في متغيّر لإعادة استخدامه، كما هو موضّح في مثال كائن JavaScript.

أصبح لديك الآن معلومات كافية عن JavaScript لبدء استخدام Earth Engine. يمكنك الاطّلاع على صفحة العميل مقابل الخادم للحصول على شرح أكثر تفصيلاً حول JavaScript مقابل عناصر Earth Engine.

في القسم التالي، يمكنك الاطّلاع على مزيد من المعلومات حول مفاهيم البرمجة الوظيفية لاستخدام حلقات for وشروط if/else والتكرارات بفعالية في Earth Engine.