Landsat 8 OLI/TIRS

۲۰۱۳-اکنون ۳۰ متر ماهواره‌ای

Landsat 8 OLI/TIRS

معرفی

Landsat 8 در فوریه ۲۰۱۳ پرتاب شد و تصاویر ماهواره‌ای با کیفیت بالا از سطح زمین ارائه می‌دهد. این ماهواره برای مطالعات تغییرات ارضی، کشاورزی و محیط زیست بسیار محبوب است.

ویژگی‌ها

ویژگی مقدار
نام کامل Landsat 8 OLI/TIRS
سال شروع ۲۰۱۳
وضوح مکانی ۳۰ متر
عرض پوشش ۱۸۵ کیلومتر
چرخه تکرار ۱۶ روز
منبع داده Microsoft Planetary Computer
هزینه رایگان (بدون نیاز به احراز هویت)

باندها

باند نام طول موج (μm) کاربرد
coastal ساحلی 0.43-0.45 مطالعات آبی کم‌عمق
blue آبی 0.45-0.51 تجزیه و تحلیل آب
green سبز 0.53-0.59 پوشش گیاهی
red قرمز 0.64-0.67 تشخیص پوشش گیاهی
nir08 مادون قرمز نزدیک 0.85-0.88 NDVI، پوشش گیاهی
swir16 مادون قرمز کوتاه 1 1.57-1.65 رطوبت خاک
swir22 مادون قرمز کوتاه 2 2.11-2.29 ترکیبات زمین
lwir11 حرارتی 10.6-11.19 دمای سطح

نصب پیش‌نیازها

pip install pystac-client planetary-computer

دسترسی مستقیم با پایتون

جستجوی تصاویر

from pystac_client import Client
import planetary_computer

# اتصال به Planetary Computer STAC
catalog = Client.open(
    "https://planetarycomputer.microsoft.com/api/stac/v1",
    modifier=planetary_computer.sign_inplace,
)

# تعریف محدوده جغرافیایی (مثلاً تهران)
bbox = [51.0, 35.5, 51.8, 36.0]

# جستجوی تصاویر Landsat 8
search = catalog.search(
    collections=["landsat-c2-l2"],
    bbox=bbox,
    datetime="2023-01-01/2023-12-31",
    query={"platform": {"eq": "landsat-8"}},
    max_items=10,
)

# نتایج
for item in search.items():
    print(f"تاریخ: {item.properties['datetime']}")
    print(f"ابرپوشانی: {item.properties.get('eo:cloud_cover', 'نامشخص')}%")
    print(f"شناسه: {item.id}")
    print("---")

دانلود تصویر با فیلتر ابر

from pystac_client import Client
import planetary_computer

catalog = Client.open(
    "https://planetarycomputer.microsoft.com/api/stac/v1",
    modifier=planetary_computer.sign_inplace,
)

search = catalog.search(
    collections=["landsat-c2-l2"],
    bbox=[51.0, 35.5, 51.8, 36.0],
    datetime="2023-06-01/2023-06-30",
    query={
        "platform": {"eq": "landsat-8"},
        "eo:cloud_cover": {"lt": 20},  # کمتر از ۲۰٪ ابر
    },
    max_items=5,
)

for item in search.items():
    cloud = item.properties.get("eo:cloud_cover", "نامشخص")
    print(f"تاریخ: {item.properties['datetime']}, ابر: {cloud}%")

دانلود و خواندن باند حرارتی

import rasterio
import planetary_computer

items = list(search.items())
if items:
    item = items[0]

    # باند حرارتی
    thermal = item.assets["lwir11"]
    signed_url = planetary_computer.sign(thermal.href)

    with rasterio.open(signed_url) as src:
        data = src.read(1)
        # تبدیل به دمای کلوین (برای Landsat 8)
        import numpy as np
        kelvin = data * 0.00341802 + 149.0
        celsius = kelvin - 273.15
        print(f"دمای میانگین: {np.mean(celsius):.1f} درجه سانتیگراد")

لینک‌های مفید