Springe direkt zu Inhalt

NBR - Sentinel-2

دعونا الآن نلقي نظرة على كيفية حساب NBR باستخدام Google Earth Engine.

كما هو مذكور في الفصل السابق، فإن NBR هو الفرق الطبيعي للأشعة تحت الحمراء ونطاق الموجة القصيرة للأشعة تحت الحمراء، محسوبًا على أنهNDVI = (NIR-SWIR) / (NIR + SWIR).

دعونا نحاول تطبيق هذا على مشهد Sentinel 2.

لأسباب تتعلق بالمقارنة، سنلقي نظرة على NBR لنفس مجموعة البيانات في نفس الوقت والموقع كما فعلنا مع NDVI.

تجهيز البيانات

الخطوات الأساسية متطابقة، نحتاج بشكل أساسي إلى الانتباه إلى استخدام النطاقات الصحيحة وتغيير تسمياتنا من NDVI إلى NBR.

// Compute Normalized Burn Ratio over S2-L2 product.
// NBR = (NIR - SWIR) / (NIR + SWIR), where
// NIR is B8, 835.1 nm
// SWIR is B12, 2202.4nm (S2A) / 2185.7nm (S2B) 	

//Step 1: Access your boundary-defining geometry
var extent_lebanon = ee.FeatureCollection("FAO/GAUL/2015/level0")
                  .filter(ee.Filter.eq('ADM0_NAME', 'Lebanon')); //filter for entry that equals the UN country name 'Lebanon'



//Step 2: Access the Sentinel-2 Level-2A data and filter it for all the the images of the year 2020 that lie within the geometries boundaries. Keep only the relevant bands and filter for cloud coverage.
var s2a = ee.ImageCollection('COPERNICUS/S2_SR')
                  .filterBounds(extent_lebanon)
                  .filterDate('2020-07-01', '2020-07-31')
                  .select('B1','B2','B3','B4','B5','B6','B7','B8','B8A','B9','B11','B12')
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 10));

//Print your ImageCollection to your console tab to inspect it
print(s2a, 'Image Collection Lebanon July 2020');
Map.centerObject(s2a,9)


//Step 3: Create a single Image by reducing by Median and clip it to the extent of the geometry
var s2a_median = s2a.median()
                    .clip(extent_lebanon);

//Print your Image to your console tab to inspect it
print(s2a_median, 'Median reduced Image Lebanon July 2020');

//Add your Image as a map layer
var visParams = {'min': 400,'max': [4000,3000,3000],   'bands':'B8,B4,B3'};
Map.addLayer(s2a_median, visParams, 'S2 Lebanon July 2020 Median');

حساب NBR

تمامًا كما هو الحال بالنسبة لـ NDVI، يقدم GEE طرقًا متعددة لحساب NBR من صورتك

هنا، سوف نلقي نظرة على الأساليب الثلاثة المختلفة التي استخدمناها بالفعل لحساب NDVI..

يستخدم الأسلوب الأول عمليات نطاق بسيطة مدمجة في GEE عن طريق عمليات حسابية على النطاق بحد ذاته، بينما يستخدم الأسلوب الثاني الوظيفة من خلال  التعبير بكتابة صيغة رياضية ويستخدم الأسلوب الثالث على الوظيفة من خلال فرق معياري ، والذي يحسب الفرق المعياري لمتغيري الإدخال

اعتمادًا على اهتماماتك وأبحاثك، قد تجد مناهج محددة ذات تقنيات عالية عند الآخرين.

//Step 4: Calculate the NBR manually: NBR = (B8 - B12) / (B8 + B12)
//This can be achieved using either simple band operations, .expression or .normalizedDifference
//Variant 1: Simple band operations
var nir = s2a_median.select('B8');
var swir = s2a_median.select('B12');
var nbr = nir.subtract(swir).divide(nir.add(swir)).rename('NBR');
print(nbr, 'NBR Lebanon July 2020 V1')

// Define special visualization parameters for the nbr and display the result.
var nbrParams = {min: -1, max: 1, palette: ['red', 'white', 'green']};
Map.addLayer(nbr, nbrParams, 'NBR Lebanon July 2020 V1');

//Variant 2: .expression
var nbr_2 = s2a_median.expression(
                      '(NIR-SWIR)/(NIR+SWIR)', {
                        'NIR' : s2a_median.select('B8'),
                        'SWIR' : s2a_median.select('B12')
                      })
                      .rename('NBR');

print(nbr_2, 'NBR Lebanon July 2020 V2')

//Display the result
Map.addLayer(nbr_2, nbrParams , 'NBR Lebanon July 2020 V2');

//Variant 3: .normalizedDifference(NIR, SWIR)
//Find out how .normalizedDifference works by checking Docs -> ee.Image -> normalizedDifference
var nbr_3 = s2a_median.normalizedDifference(['B8', 'B12'])
                      .rename('NBR');
print(nbr_3, 'NBR Lebanon July 2020 V3');

// Display the result
Map.addLayer(nbr_3, nbrParams, 'NBR Lebanon July 2020 V3')

الآن بعد أن قمنا بحساب وعرض NBR في ثلاث متغيرات مختلفة، يمكننا استخدام رمز التعريف لنرى أن قيم البيكسل متطابقة دائمًا!

الطريقة الأكثر ملاءمة لحساب NBR هي باستخدام Normalized Difference.