تصدير المخططات والصور

‫Earth Engine هي أداة تحليلية فعّالة، ولكن قد تحتاج إلى تصدير نتائج التحليل لتضمين رسوم بيانية وصور وخرائط وما إلى ذلك في التقارير أو المنشورات. في هذا القسم، ستتعرّف على كيفية إنشاء رسومات بيانية وصور يمكن تصديرها وعرضها في برامج أخرى. تذكَّر أنّه في القسم السابق، استخدمت رمزًا برمجيًا مشابهًا لما يلي لإضافة نطاق NDVI إلى كل صورة في مجموعة، حيث يشير المتغيّر l8 إلى مجموعة بيانات انعكاس Landsat 8 TOA:

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

// Import the Landsat 8 TOA image collection.
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

// Map a function over the Landsat 8 TOA collection to add an NDVI band.
var withNDVI = l8.map(function(image) {
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
});

ترتيب الأغنية

لنفترض أنّ ما تريده هو في الواقع رسم بياني لقيمة NDVI بمرور الوقت في موقع جغرافي معيّن. لإنشاء مثل هذا الرسم البياني، تتمثل الخطوة الأولى في اختيار موقع جغرافي يهمّك. أنشئ نقطة من خلال الحصول على أداة رسم النقاط () وإنشاء شكل هندسي بنقطة واحدة في منطقة اهتمامك. (إذا كانت لديك عمليات استيراد، مرِّر المؤشر فوق عمليات استيراد الأشكال الهندسية وانقر على + طبقة جديدة أولاً). تحديد الموقع الجغرافي للنقطة في منطقة زراعية أو غابة نفضية أو مرعى سنوي أو بعض أنواع الغطاء الأرضي الأخرى التي تتكرر دوريًا كل عام أدخِل اسمًا لعملية الاستيراد roi. (راجِع هذه الصفحة للحصول على معلومات حول إنشاء أشكال هندسية برمجيًا).

لنستخدِم الآن النقطة roi لإنشاء رسم بياني لقيم NDVI بمرور الوقت في البكسل الواقع تحت تلك النقطة. يمكن إنشاء الرسوم البيانية في Earth Engine باستخدام حزمة ui.Chart. (مزيد من المعلومات حول إنشاء الرسومات البيانية في Earth Engine) على وجه التحديد، لإنشاء رسم بياني بمرور الوقت، يمكنك استخدام طريقة ui.Chart.image.series():

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

// Create a chart.
var chart = ui.Chart.image.series({
  imageCollection: withNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'NDVI over time'});

// Display the chart in the console.
print(chart);

بالنسبة إلى الشكل الهندسي roi، اخترنا نقطة في منطقة زراعية، ما أدّى إلى ظهور رسم بياني يشبه الشكل 10. يُرجى العِلم أنّ مَعلمات الدالة الإنشائية للرسم البياني تتضمّن دالة اختزال ومقياسًا مثل reduceRegion(). بما أنّ النقطة التي نقدّمها كمنطقة لا يمكن أن تتقاطع إلا مع بكسل واحد، يكفي استخدام أداة الاختزال "الأولى". إذا كان لديك منطقة أكبر، عليك استخدام دالة تقليل "المتوسط" أو دالة تقليل أخرى تحدّد كيفية تجميع وحدات البكسل. يُرجى العِلم أيضًا أنّه لعرض رسم بياني، كل ما عليك فعله هو طباعته.

Tutorial_api_10_ndvi_chart.png
الشكل 10. رسم بياني لقيم NDVI في Landsat على مدار الوقت في شكل هندسي نقطي

استطراد: إخفاء بسيط للسحب في صور Landsat

قد تكون لاحظت أنّ السلسلة الزمنية لقيم NDVI في هذه النقطة تبدو غير منتظمة بعض الشيء. من المحتمل أن يكون السبب هو الغيوم. للتخفيف من هذا التأثير، يتضمّن Earth Engine خوارزمية لإخفاء السحب في بيانات أدوات استشعار Landsat التي تتضمّن نطاقًا حراريًا: ee.Algorithms.Landsat.simpleCloudScore(). تتلقّى هذه الدالة صورة انعكاس TOA من Landsat كمدخل، وتضيف نطاقًا باسم cloud، وهو فهرس لمدى تلبّد السماء بالغيوم في البكسل، ويتراوح بين صفر و100، من الأقل إلى الأكثر تلبّدًا بالغيوم على التوالي. من خلال تعديل الدالة التي تم ربطها بالمجموعة، يمكنك استخدام حد عشوائي (20) في فهرس السحابة لتنظيف الرسم البياني قليلاً:

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

var cloudlessNDVI = l8.map(function(image) {
  // Get a cloud score in [0, 100].
  var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');

  // Create a mask of cloudy pixels from an arbitrary threshold.
  var mask = cloud.lte(20);

  // Compute NDVI.
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');

  // Return the masked image with an NDVI band.
  return image.addBands(ndvi).updateMask(mask);
});

print(ui.Chart.image.series({
  imageCollection: cloudlessNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'Cloud-masked NDVI over time'}));

يتم توضيح النتيجة التي تم إخفاء الغيوم فيها في الشكل 11. يُرجى العِلم أنّ السلسلة الزمنية تبدو أكثر سلاسة، ولكن قد تظل تتضمّن وحدات بكسل متأثرة بالسُحب. عدِّل الحدّ الأدنى في الفهرس المستند إلى السحابة الإلكترونية وراقِب السلسلة الزمنية الموضّحة في الرسم البياني لمعرفة كيف يمكن أن يؤثّر هذا الحدّ الأدنى في نتائجك.

Tutorial_api_11_cloudless_chart.png
الشكل 11. رسم بياني لقيم NDVI التي تم إخفاء الغيوم فيها بمرور الوقت في شكل هندسي نقطي

تصدير الصور

لقد رأيت طريقة لتصدير رسم بياني للبيانات التي تم احتسابها بواسطة Earth Engine، ولكن ماذا عن صورة كاملة؟ لنفترض مثلاً أنّك أنشأت صورة مركّبة بأكثر وحدات البكسل خضرة كما هو موضّح في القسم السابق:

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

var greenest = cloudlessNDVI.qualityMosaic('NDVI');

الاختلاف الوحيد في هذا الرمز عن الرمز الذي استخدمته سابقًا هو أنّنا نستخدم الآن المجموعة المحجوبة في السحابة الإلكترونية. يمكنك تصدير مجموعة فرعية (محدّدة بمنطقة) من هذا باستخدام حزمة Export. (مزيد من المعلومات عن تصدير بيانات نقطية ومتجهة من Earth Engine) على سبيل المثال، لتصدير صورة يمكن تضمينها بسهولة في مستندات أخرى، لننشئ صورة تمثيلية، كما فعلت سابقًا، ثم نصدّرها إلى مجلد Google Drive:

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

// Create a 3-band, 8-bit, color-IR composite to export.
var visualization = greenest.visualize({
  bands: ['B5', 'B4', 'B3'],
  max: 0.4
});

// Create a task that you can launch from the Tasks tab.
Export.image.toDrive({
  image: visualization,
  description: 'Greenest_pixel_composite',
  scale: 30
});

عند تشغيل هذا الرمز، لاحظ أنّه يتم إنشاء مهمة جديدة في علامة التبويب المهام. لبدء مربع حوار إعدادات التصدير، انقر على الزر تنفيذ في علامة التبويب المهام. بعد ضبط المهمة، انقر على الزر تشغيل في مربّع الحوار لبدء عملية التصدير. ولكن قبل أن تفعل ذلك، ننصحك بما يلي:

السبب الذي يستدعي توخّي الحذر عند التصدير بدون وسيطة region هو أنّه في حال ضبط قيمة صغيرة نسبيًا لـ scale، وتم تصغير الخريطة إلى منطقة كبيرة، سيتم تصدير صورة كبيرة جدًا إلى مجلد Drive. يمكنك الاطّلاع على مستندات Export.image.toDrive() في علامة التبويب المستندات لمعرفة المزيد من التفاصيل وقائمة بمَعلمات الضبط المحتملة.

بهذا نكون قد أنهينا هذه المقدمة عن Earth Engine API. لقد تعرّفت الآن على معظم وظائف Earth Engine الشائعة، ويجب أن تكون قادرًا على الانتقال بثقة إلى عمليات تحليل أكثر تعقيدًا. احرص على قراءة المستندات والبحث في المنتدى للحصول على إجابات عن الأسئلة الأخرى. نتمنّى لك التوفيق في الترميز.