خوارزميات Landsat

بنية مجموعة Landsat

تُنتج هيئة المساحة الجيولوجية الأمريكية بيانات في 3 فئات لكلّ قمر صناعي:

  • المستوى 1 (T1): البيانات التي تستوفي متطلبات الجودة الهندسية والراديومترية
  • المستوى 2 (T2): البيانات التي لا تستوفي متطلبات المستوى 1
  • الوقت الفعلي (RT): البيانات التي لم يتم تقييمها بعد (يمكن أن يستغرق ذلك شهرًا واحدًا).

يُرجى الاطّلاع على مستندات USGS حول مستويات المجموعة 2 للحصول على مزيد من المعلومات.

للسماح بالوصول إلى كلّ من بيانات المستوى الأول التي تم التحقّق منها وأحدث البيانات في الوقت الفعلي معًا، لقد جمعنا المشاهد في مجموعات حسب المستوى والّقمة. في ما يلي أمثلة على Landsat 8:

رقم التعريف الوصف
LANDSAT/LC08/C02/T1_RT Landsat 8، المجموعة 2، المستوى 1 + الوقت الفعلي
LANDSAT/LC08/C02/T1 Landsat 8، المجموعة 2، المستوى 1 فقط
LANDSAT/LC08/C02/T2 Landsat 8، المجموعة 2، المستوى 2 فقط

تتم إضافة المشاهد التي تم الحصول عليها حديثًا إلى مجموعة T1_RT يوميًا. بعد إعادة معالجة أحد مَشاهد المعالجة اللاحقة وتصنيفه على أنّه T1 أو T2، ستتم إزالته من مجموعة T1_RT وستتم إضافة النسخة الجديدة إلى المجموعات المناسبة. إذا كان عملك حساسًا لعمليات الإزالة أو المشاهد التي يُحتمل أن تكون مسجَّلة بشكل خاطئ، ننصحك بالالتزام بمجموعة T1 ، ولكن بشكل عام، من النادر جدًا أن يكون أي تسجيل خاطئ كبيرًا بما يكفي لرصده في المشاهد التي تم الحصول عليها حديثًا.

تحتوي كل مجموعة من المجموعات السابقة على البيانات الأولية (أي الإشعاع المقاس عند أداة الاستشعار). بالإضافة إلى ذلك، لكل مجموعة تحتوي على صور T1 أو T2، يتم تقديم منتجات TOA (انعكاس سطح الغلاف الجوي ) وSR (انعكاس السطح) وLST (درجة حرارة سطح الأرض). يوضّح الجدول التالي رقم تعريف المجموعة لمجموعتَي TOA وSR/LST باستخدام بيانات Landsat 8 كمثال.

رقم التعريف الوصف
LANDSAT/LC08/C02/T1_RT_TOA Landsat 8، المجموعة 2، المستوى 1 + الوقت الفعلي، TOA
LANDSAT/LC08/C02/T1_TOA Landsat 8، المجموعة 2، المستوى 1 فقط، TOA
LANDSAT/LC08/C02/T1_L2 Landsat 8، المجموعة 2، المستوى 1 فقط، SR وLST
LANDSAT/LC08/C02/T2_TOA Landsat 8، المجموعة 2، المستوى 2 فقط، TOA

تتوفّر هذه البيانات لسلسلة Landsat 4 و5 و7 و8 و9. استبدِل "LC08" في تعريفات المجموعة السابقة بمعرّفات من الجدول التالي لاسترداد مجموعات الأقمار الاصطناعي المختلفة.

رقم التعريف الوصف
LT04 Landsat 4، أداة التحليل الموضوعي (TM)
LT05 Landsat 5، أداة التصوير الموضوعي (TM)
LE07 Landsat 7، Enhanced Thematic Mapper Plus (ETM+)
LC08 Landsat 8، Operational Land Imager (OLI)
LC09 Landsat 9، Operational Land Imager 2 (OLI-2)

حالة مجموعة Landsat

المجموعة التمهيدية 1: لم تعُد تنتجها أو توزّعها هيئة المسح الجيولوجي الأمريكية، ولا تتوافق مع Earth Engine، وسيتمّت إزالتها من "فهرس البيانات" في عام 2024.

المجموعة 1: لم تعُد تنتجها أو توزّعها هيئة المسح الجيولوجي الأمريكية، ولا تتوافق مع Earth Engine، وسيتمّت إزالتها من "قائمة البيانات" في عام 2024. استخدِم دليل نقل البيانات لتعديل النصوص البرمجية ووحدات التطبيقات في Earth Engine إلى المجموعة 2 بحلول 1 تموز (يوليو) 2024 لتجنُّب عدم إتمام الطلبات.

المجموعة 2: المجموعة الحالية التي أنشأتها هيئة المسح الجيولوجي الأمريكية التوفّر الكامل في كتالوج بيانات Earth Engine

طرق معالجة Landsat

يحتوي Earth Engine على مجموعة متنوعة من طرق المعالجة الخاصة بصور Landsat. على وجه التحديد، هناك طُرق لاحتساب الإشعاع عند أداة الاستشعار، وانعكاس سطح الغلاف الجوي (TOA)، وانعكاس السطح (SR)، ودرجة السحب والمركبات الخالية من السحب.

الإشعاع عند أداة الاستشعار وانعكاس TOA

تحتوي المشاهد "الأولية" في Earth Engine على صور تحتوي على أرقام رقمية (DN) تُمثِّل الإشعاع الذي تم قياسه. إنّ تحويل القيم الرقمية إلى شدة الإشعاع عند أداة الاستشعار هو عملية تحول خطي باستخدام معاملات مخزّنة في البيانات الوصفية للمشهد (Chander et al. 2009). تُجري الطريقة ee.Algorithms.Landsat.calibratedRadiance() هذه التحويلة. إنّ التحويل إلى الانعكاس على مستوى سطح الأرض (أو عند أداة الاستشعار) هو عملية تحول خطيّة تراعي ارتفاع الشمس والمسافة المتغيرة موسميًا بين الأرض والشمس. تتم معالجة الإحالة الناجحة الناتجة عن عرض إعلان على شبكة البحث من خلال الطريقة ee.Algorithms.Landsat.TOA(). تعمل طريقة TOA على تحويل النطاقات الحرارية إلى درجة حرارة السطوع. راجِع Chander et al. (2009) (أو هذا الموقع الإلكتروني لهيئة المساحة الجيولوجية الأمريكية بشأن Landsat 8) للحصول على مزيد من المعلومات عن احتساب انعكاس سطح الأرض أو درجة حرارة السطوع. يعرض المثال التالي عملية التحويل من البيانات الأولية إلى الإشعاع وانعكاس سطح الأرض لصورة Landsat 8:

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

// Load a raw Landsat scene and display it.
var raw = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318');
Map.centerObject(raw, 10);
Map.addLayer(raw, {bands: ['B4', 'B3', 'B2'], min: 6000, max: 12000}, 'raw');

// Convert the raw data to radiance.
var radiance = ee.Algorithms.Landsat.calibratedRadiance(raw);
Map.addLayer(radiance, {bands: ['B4', 'B3', 'B2'], max: 90}, 'radiance');

// Convert the raw data to top-of-atmosphere reflectance.
var toa = ee.Algorithms.Landsat.TOA(raw);

Map.addLayer(toa, {bands: ['B4', 'B3', 'B2'], max: 0.2}, 'toa reflectance');

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

# Load a raw Landsat scene and display it.
raw = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318')
m = geemap.Map()
m.center_object(raw, 10)
m.add_layer(
    raw, {'bands': ['B4', 'B3', 'B2'], 'min': 6000, 'max': 12000}, 'raw'
)

# Convert the raw data to radiance.
radiance = ee.Algorithms.Landsat.calibratedRadiance(raw)
m.add_layer(radiance, {'bands': ['B4', 'B3', 'B2'], 'max': 90}, 'radiance')

# Convert the raw data to top-of-atmosphere reflectance.
toa = ee.Algorithms.Landsat.TOA(raw)

m.add_layer(toa, {'bands': ['B4', 'B3', 'B2'], 'max': 0.2}, 'toa reflectance')
m

انعكاس السطح

تتوفّر بيانات الانعكاس على سطح الأرض (SR) من Landsat في Earth Engine كنسخة من أرشيف المجموعة 2، المستوى 2 من USGS. يُرجى العِلم أنّه يتم إنشاء بيانات Landsat 4 و5 و7 SR باستخدام خوارزمية LEDAPS، في حين يتم إنشاء بيانات Landsat 8 و9 SR باستخدام خوارزمية LaSRC. يمكنك الاطّلاع على المزيد من المعلومات حول هذه الخوارزميات واختلافاتها عن الخوارزميات التي تستخدمها هيئة المسح الجيولوجي الأمريكية (USGS).

يمكنك الوصول إلى صورة Landsat 8 من المجموعة 2، المستوى 2 من USGS على النحو التالي:

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

var srImage = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028');

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

sr_image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028')

مجموعات بيانات انعكاس سطح الأرض لمجموعة Landsat 4 إلى 9 من المجموعة 2 هي:

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

var surfaceReflectanceL4 = ee.ImageCollection('LANDSAT/LT04/C02/T1_L2');
var surfaceReflectanceL5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2');
var surfaceReflectanceL7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2');
var surfaceReflectanceL8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2');
var surfaceReflectanceL9 = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2');

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

surface_reflectance_l4 = ee.ImageCollection('LANDSAT/LT04/C02/T1_L2')
surface_reflectance_l5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2')
surface_reflectance_l7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2')
surface_reflectance_l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
surface_reflectance_l9 = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2')

نتيجة السحابة الإلكترونية البسيطة

لتقييم وحدات بكسل Landsat حسب الغيوم النسبية، يوفّر Earth Engine خوارزمية تقييم أساسية للغيوم في ee.Algorithms.Landsat.simpleCloudScore(). (لمعرفة تفاصيل عن التنفيذ، يُرجى الاطّلاع على هذا نموذج النص البرمجي في "محرر الرموز"). يستخدم المثال التالي خوارزمية احتساب نقاط السحب لإخفاء السحب في صورة Landsat 8:

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

// Load a cloudy Landsat scene and display it.
var cloudy_scene = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140926');
Map.centerObject(cloudy_scene);
Map.addLayer(cloudy_scene, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'TOA', false);

// Add a cloud score band.  It is automatically called 'cloud'.
var scored = ee.Algorithms.Landsat.simpleCloudScore(cloudy_scene);

// Create a mask from the cloud score and combine it with the image mask.
var mask = scored.select(['cloud']).lte(20);

// Apply the mask to the image and display the result.
var masked = cloudy_scene.updateMask(mask);
Map.addLayer(masked, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'masked');

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

# Load a cloudy Landsat scene and display it.
cloudy_scene = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140926')
m = geemap.Map()
m.center_object(cloudy_scene)
m.add_layer(
    cloudy_scene, {'bands': ['B4', 'B3', 'B2'], 'max': 0.4}, 'TOA', False
)

# Add a cloud score band.  It is automatically called 'cloud'.
scored = ee.Algorithms.Landsat.simpleCloudScore(cloudy_scene)

# Create a mask from the cloud score and combine it with the image mask.
mask = scored.select(['cloud']).lte(20)

# Apply the mask to the image and display the result.
masked = cloudy_scene.updateMask(mask)
m.add_layer(masked, {'bands': ['B4', 'B3', 'B2'], 'max': 0.4}, 'masked')
m

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

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

// Load a Landsat 8 TOA collection, make 15-day mosaic, set SENSOR_ID property.
var mosaic = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterDate('2019-06-01', '2019-06-16').mosaic()
  .set('SENSOR_ID', 'OLI_TIRS');

// Cloud score the mosaic and display the result.
var scored_mosaic = ee.Algorithms.Landsat.simpleCloudScore(mosaic);
Map.addLayer(scored_mosaic, {bands: ['B4', 'B3', 'B2'], max: 0.4},
    'TOA mosaic');

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

# Load a Landsat 8 TOA collection, make 15-day mosaic, set SENSOR_ID property.
mosaic = (
    ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
    .filterDate('2019-06-01', '2019-06-16')
    .mosaic()
    .set('SENSOR_ID', 'OLI_TIRS')
)

# Cloud score the mosaic and display the result.
scored_mosaic = ee.Algorithms.Landsat.simpleCloudScore(mosaic)
m = geemap.Map()
m.add_layer(
    scored_mosaic,
    {'bands': ['B4', 'B3', 'B2'], 'max': 0.4},
    'TOA mosaic',
)
m

SENSOR_ID هي سمة للصور الفردية. عندما ينشئ Earth Engine mosaic من العديد من الصور، يجب أن يتخلّص من البيانات الوصفية للصور الفردية، بما في ذلك سمة SENSOR_ID. لتقييم فسيفساء السحابة، تبحث أداة Earth Engine عن تلك السمة ولا يمكنها العثور عليها، ما يؤدي إلى حدوث خطأ. اضبط السمة يدويًا لتجنّب ذلك. أرقام تعريف أجهزة الاستشعار في Landsat 5 و7 و8(9) هي "TM" و"ETM" و"OLI_TIRS" على التوالي.

مركب بسيط

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

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

// Load a raw Landsat 5 ImageCollection for a single year.
var collection = ee.ImageCollection('LANDSAT/LT05/C02/T1')
    .filterDate('2010-01-01', '2010-12-31');

// Create a cloud-free composite with default parameters.
var composite = ee.Algorithms.Landsat.simpleComposite(collection);

// Create a cloud-free composite with custom parameters for
// cloud score threshold and percentile.
var customComposite = ee.Algorithms.Landsat.simpleComposite({
  collection: collection,
  percentile: 75,
  cloudScoreRange: 5
});

// Display the composites.
Map.setCenter(-122.3578, 37.7726, 10);
Map.addLayer(composite, {bands: ['B4', 'B3', 'B2'], max: 128}, 'TOA composite');
Map.addLayer(customComposite, {bands: ['B4', 'B3', 'B2'], max: 128},
    'Custom TOA composite');

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

# Load a raw Landsat 5 ImageCollection for a single year.
collection = ee.ImageCollection('LANDSAT/LT05/C02/T1').filterDate(
    '2010-01-01', '2010-12-31'
)

# Create a cloud-free composite with default parameters.
composite = ee.Algorithms.Landsat.simpleComposite(collection)

# Create a cloud-free composite with custom parameters for
# cloud score threshold and percentile.
custom_composite = ee.Algorithms.Landsat.simpleComposite(
    collection=collection, percentile=75, cloudScoreRange=5
)

# Display the composites.
m = geemap.Map()
m.set_center(-122.3578, 37.7726, 10)
m.add_layer(
    composite, {'bands': ['B4', 'B3', 'B2'], 'max': 128}, 'TOA composite'
)
m.add_layer(
    custom_composite,
    {'bands': ['B4', 'B3', 'B2'], 'max': 128},
    'Custom TOA composite',
)
m

يُرجى العلم أنّ الإدخال في الصورة المركبة البسيطة هو مجموعة من الصور الأولية. يُرجى العلم أيضًا أنّه يتم تلقائيًا تحويل انعكاس الضوء في النطاق العاكس إلى 8 بت، ودرجة الحرارة في النطاق الترميمي إلى كلفن مطروحًا منه 100، وذلك ليناسب النطاق الذي يضم 8 بت. يمكنك تغيير هذا السلوك من خلال ضبط المَعلمة asFloat على true، للحصول على ناتج عدد صحيح بدون تغيير أو تحويل.