عناصر 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. In this case an ee.Dictionary is constructed directly from a JavaScript literal object:

أداة تعديل الرموز (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 الوقت. كما هو الحال في الأمثلة السابقة، من المهم التمييز بين كائن JavaScript Date وكائن Earth Engine ee.Date. يمكنك إنشاء 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 بشكل فعّال.