في السابق، تعلّمت كيفية الحصول على مشاهد Landsat الفردية من خلال تنفيذ إجراء مشابه لما يلي،
حيث يمثّل l8
وpoint
عمليات استيراد تمثّل مجموعة Landsat 8 TOA
وشكلاً هندسيًا لمنطقة الاهتمام:
محرّر الرموز البرمجية (JavaScript)
// Define a point of interest. Use the UI Drawing Tools to import a point // geometry and name it "point" or set the point coordinates with the // ee.Geometry.Point() function as demonstrated here. var point = ee.Geometry.Point([-122.292, 37.9018]); // Import the Landsat 8 TOA image collection. var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); // Get the least cloudy image in 2015. var image = ee.Image( l8.filterBounds(point) .filterDate('2015-01-01', '2015-12-31') .sort('CLOUD_COVER') .first() );
لنفترض الآن أنّك تريد حساب صورة "مؤشر الاختلاف النباتي القياسي" (NDVI) من صورة Landsat. تعكس النباتات الضوء في الجزء القريب من الأشعة تحت الحمراء (NIR) من الطيف الكهرومغناطيسي، وتمتص الضوء في الجزء الأحمر (مزيد من المعلومات حول انعكاس الأشعة تحت الحمراء القريبة من النباتات). تستخدِم مؤشر NDVI ذلك لإنشاء قيمة واحدة تعكس بشكل تقريبي نشاط التمثيل الضوئي الذي يحدث في البكسل. ويتم احتسابها وفقًا للمعادلة التالية: (NIR - red) / (NIR + red). وينتج عن ذلك رقم يتراوح بين 1 و-1، حيث تحتوي وحدات البكسل ذات النشاط العالي في التمثيل الضوئي على قيمة عالية لمؤشر NDVI. في ما يلي إحدى طرق احتساب مؤشر NDVI في Earth Engine:
محرّر الرموز البرمجية (JavaScript)
// Compute the Normalized Difference Vegetation Index (NDVI). var nir = image.select('B5'); var red = image.select('B4'); var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI'); // Display the result. Map.centerObject(image, 9); var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']}; Map.addLayer(ndvi, ndviParams, 'NDVI image');
يجب أن تبدو النتيجة مشابهة للشكل 8. يُرجى العِلم أنّنا نستخدم الدالة select()
التي تعرّفت عليها في القسم السابق حول
الإخفاء للحصول على النطاقين الأحمر والأشعة تحت الحمراء القريبة، ثم نحسب مؤشر NDVI باستخدام عوامل التشغيل الرياضية للصور التي سبق أن رأيتها أيضًا في
القسم حول Image
الرياضيات. أخيرًا، اعرض الصورة باستخدام لوحة ألوان. في هذا المثال، استخدمنا أسماء الألوان بدلاً من السلاسل السداسية العشرية في لوحة الألوان. (يمكنك الاطّلاع على هذا المرجع الخارجي حول ألوان CSS للحصول على التفاصيل).

تتوفّر عملية الفرق المعياري بشكل كبير في الاستشعار عن بُعد، لذا هناك دالة اختصار في ee.Image
مفيدة لتبسيط الرمز في المثال السابق:
محرّر الرموز البرمجية (JavaScript)
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
ربط دالة بمجموعة
لنفترض الآن أنّك تريد إضافة مؤشر NDVI إلى كل صورة في مجموعة صور. يمكنك إجراء ذلك في Earth Engine من خلال map()
دالة على المجموعة.
لا تخلط بين map()
والكائن Map
. الأولى هي طريقة
في مجموعة، وتستخدم map في
مفهوم الحوسبة المتوازية
لتطبيق دالة على كل عنصر في مجموعة. تحدّد الدالة العمليات التي سيتم تطبيقها على كل عنصر في المجموعة. لقد رأيت
دالة بسيطة في البرنامج التعليمي JavaScript، ولكن
سننشئ الآن دالة تتضمّن وظائف Earth Engine. على سبيل المثال،
انسخ رمز NDVI السابق إلى دالة تعرض الصورة المدخلة مع نطاق NDVI:
محرّر الرموز البرمجية (JavaScript)
var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); }; // Test the addNDVI function on a single image. var ndvi = addNDVI(image).select('NDVI');
قد لا يكون هذا الرمز فعالاً في احتساب مؤشر NDVI لصورة واحدة، ولكن يمكن استخدام هذه الدالة كمعلَمة في map()
من أجل إضافة نطاق NDVI إلى كل صورة في المجموعة. من المفيد غالبًا اختبار دالة على صورة واحدة أولاً للتأكّد من أنّها تعمل على النحو المتوقّع. بعد اختبار الدالة على صورة فردية والتأكّد من أنّها تنفّذ ما تريد، يمكنك ربطها بالمجموعة:
محرّر الرموز البرمجية (JavaScript)
var withNDVI = l8.map(addNDVI);
للتأكّد من أنّ هذا الإجراء يضع نطاق NDVI في كل صورة ضمن هذه المجموعة، يمكنك إضافة المجموعة withNDVI
إلى الخريطة والاستعلام عن موقع جغرافي عشوائي باستخدام علامة التبويب أداة الفحص. ستلاحظ أنّ كل صورة في المجموعة تتضمّن الآن نطاقًا باسم NDVI
.
إنشاء صورة مركّبة من وحدات البكسل الأكثر اخضرارًا
بعد أن أنشأت مجموعة صور تتضمّن كل صورة نطاق NDVI، يمكننا استكشاف طريقة جديدة لإنشاء صور مركّبة: qualityMosaic()
. ربما لاحظت
فواصل بين مسارات Landsat، حتى في الصورة المركّبة التي تتضمّن متوسط قيم البكسل. قد يعود جزء من ذلك إلى الاختلافات في
علم الظواهر نتيجةً لجمع الصور في مسارات متجاورة في أوقات مختلفة (أي بفارق 8 أيام تحديدًا). إحدى طرق الحدّ من هذا التباين هي محاولة ضبط قيم البكسل في الصورة المركّبة من المرحلة الظاهرية نفسها تقريبًا، مثل وقت الحد الأقصى لاخضرار النباتات (عندما تكون الأوراق موجودة ونشطة في عملية التمثيل الضوئي). إذا سمحنا بتحديد الحد الأقصى لدرجة الخضرة من خلال الحد الأقصى لقيمة NDVI، يمكننا استخدام qualityMosaic()
لإنشاء صورة مركّبة يحتوي كل بكسل فيها على بكسل الحد الأقصى لقيمة NDVI من المجموعة.
يمكنك الآن الاستفادة من نطاق NDVI المُضاف في مجموعتك withNDVI
:
محرّر الرموز البرمجية (JavaScript)
// Make a "greenest" pixel composite. var greenest = withNDVI.qualityMosaic('NDVI'); // Display the result. var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.addLayer(greenest, visParams, 'Greenest pixel composite');
يجب أن تبدو نتيجة هذه الرمز البرمجي مشابهةً للشكل 9. بالمقارنة مع متوسط الصورة المركّبة الموضّح في الشكل 6، نلاحظ أنّ الصورة المركّبة التي تتضمّن أكبر عدد من وحدات البكسل الخضراء هي بالفعل أكثر اخضرارًا. مع ذلك، فإنّ التدقيق في المسطحات المائية سيكشف عن مشكلة مختلفة. على وجه التحديد،
تظهر المسطحات المائية الآن بشكل غائم. ويرجع ذلك إلى طريقة عمل طريقة qualityMosaic()
: في كل موقع جغرافي، يتم فحص السلسلة الزمنية بأكملها ويتم ضبط البكسل الذي يحتوي على
القيمة القصوى في نطاق NDVI كقيمة مركّبة. بما أنّ قيمة مؤشر NDVI تكون أعلى فوق السحب مقارنةً بالمياه، فإنّ مناطق المياه تحصل على وحدات بكسل غائمة، بينما تظهر المناطق المغطاة بالنباتات باللون الأخضر لأنّ قيمة مؤشر NDVI تكون في أعلى مستوياتها عندما تكون النباتات في وحدة البكسل نشطة في عملية التمثيل الضوئي.

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