في السابق، تعرّفت على كيفية الحصول على مشاهد 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 هذه المعادلة لإنشاء قيمة واحدة تعكس تقريبًا نشاط التمثيل الضوئي الذي يحدث في وحدة بكسل. وتكون المعادلة الحسابية هي (الأشعة تحت الحمراء القريبة - الأحمر) / (الأشعة تحت الحمراء القريبة + الأحمر). وينتج عن ذلك رقم بين 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. عند مقارنة الشكل 9 بالصورة المركّبة التي تعرض القيمة المتوسطة في الشكل 6، نلاحظ أنّ الصورة المركّبة التي تعرض البكسل الأكثر اخضرارًا هي بالفعل أكثر اخضرارًا. ومع ذلك، فإن الفحص الدقيق للمسطحات المائية من شأنه أن يوضح مشكلة مختلفة. على وجه التحديد،
تظهر المسطحات المائية الآن غائمة. ويرجع ذلك إلى طريقة عمل دالة qualityMosaic(): في كل موقع جغرافي، يتم فحص السلسلة الزمنية بأكملها ويتم ضبط البكسل الذي يحتوي على الحد الأقصى للقيمة في نطاق NDVI كقيمة مركّبة. بما أنّ مؤشر NDVI أعلى فوق السحب مقارنةً بالمياه، تظهر وحدات بكسل غائمة في المناطق المائية، بينما تظهر المناطق النباتية باللون الأخضر لأنّ مؤشر NDVI يكون في أعلى مستوياته عندما يكون النبات في وحدة البكسل نشطًا في عملية التمثيل الضوئي.
لقد تعرّفت الآن على عدة طرق لدمج الصور وفسيفسائها في Earth Engine. يمكنك إنشاء صور مركّبة من أحدث القيم أو القيم المتوسطة أو وحدات البكسل الأكثر خضرة من الصور التي تمت فلترتها حسب الوقت والمكان أو جميع الصور في المجموعة. لقد تعلّمت كيفية إجراء العمليات الحسابية على الصور واستخراج المعلومات. تتناول الصفحة التالية طرق الحصول على المعلومات من Earth Engine، على سبيل المثال، كرسم بياني أو مجموعة بيانات يتم تصديرها إلى مجلد Google Drive.