الگوریتم های لندست

ساختار مجموعه لندست

USGS داده ها را در 3 طبقه (رده) برای هر ماهواره تولید می کند:

  • ردیف 1 (T1) - داده هایی که الزامات کیفیت هندسی و رادیومتری را برآورده می کنند
  • ردیف 2 (T2) - داده هایی که الزامات ردیف 1 را برآورده نمی کنند
  • زمان واقعی (RT) - داده هایی که هنوز ارزیابی نشده اند (به اندازه یک ماه طول می کشد).

برای اطلاعات بیشتر به مستندات USGS در مجموعه 2 Tiers مراجعه کنید.

برای اجازه دسترسی به داده‌های تایید شده T1 و جدیدترین داده‌های هم‌زمان، ما صحنه‌ها را در مجموعه‌هایی بر اساس طبقه و ماهواره گروه‌بندی کرده‌ایم. نمونه هایی برای Landsat 8 به شرح زیر است:

شناسه توضیحات
LANDSAT/LC08/C02/T1_RT Landsat 8, Collection 2, Tier 1 + Real Time
LANDSAT/LC08/C02/T1 فقط لندست 8، مجموعه 2، ردیف 1
LANDSAT/LC08/C02/T2 فقط لندست 8، مجموعه 2، ردیف 2

صحنه های تازه به دست آمده روزانه به مجموعه T1_RT اضافه می شود. هنگامی که یک صحنه RT دوباره پردازش شد و به عنوان T1 یا T2 طبقه بندی شد، از مجموعه T1_RT حذف می شود و نسخه جدید به مجموعه(های) مناسب اضافه می شود. اگر کار شما به حذف‌ها یا صحنه‌های بالقوه اشتباه ثبت‌شده حساس است، ممکن است بخواهید به مجموعه T1 بچسبید، اما به طور کلی، بسیار غیرمعمول است که هرگونه ثبت اشتباه به اندازه‌ای بزرگ باشد که در صحنه‌های تازه به‌دست‌آمده متوجه شوید.

هر یک از مجموعه‌های قبلی حاوی داده‌های خام (یعنی مقیاس‌شده، درخشندگی در حسگر) است. علاوه بر این، برای هر مجموعه ای که حاوی تصاویر T1 یا T2 است، محصولات TOA (بازتاب بالای اتمسفر)، SR (بازتاب سطحی) و LST (دمای سطح زمین) ارائه می شود. جدول زیر شناسه مجموعه برای مجموعه های TOA و SR/LST را با استفاده از داده های Landsat 8 به عنوان مثال توصیف می کند.

شناسه توضیحات
LANDSAT/LC08/C02/T1_RT_TOA Landsat 8, Collection 2, Tier 1 + Real Time, TOA
LANDSAT/LC08/C02/T1_TOA Landsat 8, Collection 2, Tier 1 only, TOA
LANDSAT/LC08/C02/T1_L2 Landsat 8، مجموعه 2، فقط Tier 1، SR و LST
LANDSAT/LC08/C02/T2_TOA Landsat 8, Collection 2, Tier 2 only, TOA

این داده‌ها برای Landsat 4، 5، 7، 8، و 9 وجود دارد. برای بازیابی مجموعه‌ها برای ماهواره‌های مختلف، «LC08» را در تعاریف مجموعه قبلی با شناسه‌های جدول زیر جایگزین کنید.

شناسه توضیحات
LT04 Landsat 4، نقشه‌بردار موضوعی (TM)
LT05 Landsat 5، نقشه‌بردار موضوعی (TM)
LE07 Landsat 7، نقشه‌بردار موضوعی پیشرفته (ETM+)
LC08 Landsat 8، تصویربرداری زمین عملیاتی (OLI)
LC09 Landsat 9، عملیاتی Land Imager 2 (OLI-2)

وضعیت مجموعه لندست

Pre-Collection 1 : دیگر توسط USGS تولید یا توزیع نمی شود، توسط Earth Engine پشتیبانی نمی شود، تا در سال 2024 از کاتالوگ داده حذف شود.

مجموعه 1 : دیگر توسط USGS تولید یا توزیع نمی‌شود، توسط Earth Engine پشتیبانی نمی‌شود، تا در سال 2024 از کاتالوگ داده حذف شود. برای جلوگیری از درخواست‌های ناموفق، از راهنمای انتقال برای به‌روزرسانی اسکریپت‌ها، ماژول‌ها و برنامه‌های Earth Engine خود به مجموعه 2 تا 1 ژوئیه 2024 استفاده کنید.

مجموعه 2 : مجموعه فعلی تولید شده توسط USGS. در دسترس بودن کامل در کاتالوگ داده موتور زمین .

روش های پردازش لندست

Earth Engine شامل انواع روش های پردازش خاص Landsat است. به طور خاص، روش‌هایی برای محاسبه تابش حسگر، بازتاب بالای اتمسفر (TOA)، بازتاب سطح (SR)، امتیاز ابر و کامپوزیت‌های بدون ابر وجود دارد.

درخشندگی در حسگر و بازتاب TOA

صحنه‌های «خام» در Earth Engine حاوی تصاویری با اعداد دیجیتال (DN) هستند که درخشندگی مقیاس‌شده را نشان می‌دهند. تبدیل DNها به درخشندگی در حسگر یک تبدیل خطی با استفاده از ضرایب ذخیره شده در فراداده صحنه است ( چاندر و همکاران 2009 ). متد ee.Algorithms.Landsat.calibratedRadiance() این تبدیل را انجام می دهد. تبدیل به بازتاب TOA (یا در حسگر) یک تبدیل خطی است که ارتفاع خورشید و فاصله زمین-خورشید متغیر فصلی را محاسبه می‌کند. تبدیل TOA توسط روش ee.Algorithms.Landsat.TOA() انجام می شود. روش TOA نوارهای حرارتی را به دمای روشنایی تبدیل می کند. Chander et al. (2009) (یا این سایت USGS برای Landsat 8) برای اطلاعات بیشتر در مورد محاسبه بازتاب TOA یا دمای روشنایی. مثال زیر تبدیل از داده های خام به درخشندگی و بازتاب TOA را برای تصویر Landsat 8 نشان می دهد:

ویرایشگر کد (جاوا اسکریپت)

// 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');

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

import ee
import geemap.core as geemap

کولب (پایتون)

# 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) در Earth Engine به‌عنوان نسخه‌ای از بایگانی سطح 2 مجموعه 2 USGS موجود است. توجه داشته باشید که داده های Landsat 4، 5 و 7 SR با استفاده از الگوریتم LEDAPS تولید می شوند، در حالی که داده های Landsat 8 و 9 SR با استفاده از الگوریتم LaSRC تولید می شوند. با این الگوریتم ها و تفاوت های آنها با USGS آشنا شوید .

شما می توانید به یک تصویر USGS Collection 2، Level 2 Landsat 8 مانند این دسترسی داشته باشید:

ویرایشگر کد (جاوا اسکریپت)

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

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

import ee
import geemap.core as geemap

کولب (پایتون)

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

مجموعه داده های بازتاب سطحی برای مجموعه 2 Landsat 4 تا 9 عبارتند از:

ویرایشگر کد (جاوا اسکریپت)

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');

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

import ee
import geemap.core as geemap

کولب (پایتون)

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 استفاده می‌کند:

ویرایشگر کد (جاوا اسکریپت)

// 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');

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

import ee
import geemap.core as geemap

کولب (پایتون)

# 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 را تغییر دهید تا تفاوت بین تصاویر ماسک‌دار و بدون ماسک مقایسه شود. (برای اطلاع از نحوه انجام این کار به بخش Layer Manager در اسناد ویرایشگر کد مراجعه کنید). توجه داشته باشید که ورودی simpleCloudScore() یک صحنه TOA لندست است. همچنین توجه داشته باشید که simpleCloudScore() باندی به نام 'cloud' را به تصویر ورودی اضافه می کند. نوار ابری شامل امتیاز ابر از 0 (نه ابری) تا 100 (بیشترین ابری) است. مثال قبلی از یک آستانه دلخواه (20) در امتیاز ابر برای پوشاندن پیکسل های ابری استفاده می کند. برای اعمال این الگوریتم به موزاییک Earth Engine از صحنه های Landsat، ویژگی SENSOR_ID را تنظیم کنید:

ویرایشگر کد (جاوا اسکریپت)

// 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');

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

import ee
import geemap.core as geemap

کولب (پایتون)

# 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 از بسیاری از تصاویر موزاییکی می‌سازد، باید متادیتاهای تصویری منفرد از جمله ویژگی SENSOR_ID را بیرون بیاورد. برای امتیاز ابری یک موزاییک، Earth Engine به دنبال آن ویژگی می‌گردد و نمی‌تواند آن را پیدا کند و در نتیجه با خطا مواجه می‌شود. برای جلوگیری از آن، ویژگی را به صورت دستی تنظیم کنید. شناسه‌های حسگر Landsat 5، 7، و 8(9) به ترتیب «TM»، «ETM» و «OLI_TIRS» هستند.

کامپوزیت ساده

برای ایجاد کامپوزیت های Landsat ساده بدون ابر، Earth Engine متد ee.Algorithms.Landsat.simpleComposite() را ارائه می دهد. این روش زیر مجموعه‌ای از صحنه‌ها را در هر مکان انتخاب می‌کند، به بازتاب TOA تبدیل می‌کند، امتیاز ابر ساده را اعمال می‌کند و میانه‌ترین پیکسل‌های ابری را می‌گیرد. این مثال یک ترکیب ساده با استفاده از پارامترهای پیش‌فرض ایجاد می‌کند و آن را با یک ترکیب ترکیبی با استفاده از پارامترهای سفارشی برای آستانه امتیاز ابری و صدک مقایسه می‌کند:

ویرایشگر کد (جاوا اسکریپت)

// 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');

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

import ee
import geemap.core as geemap

کولب (پایتون)

# 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 تغییر دهید تا خروجی شناور بدون مقیاس و بدون تغییر تغییر کند.