MODIS Terra Surface Reflectance

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

MODIS Terra Surface Reflectance

معرفی

MODIS (Moderate Resolution Imaging Spectroradiometer) روی ماهواره Terra نصب شده و از سال ۲۰۰۰ تصاویر سطح زمین را ثبت می‌کند. این داده‌ها برای مطالعات تغییرات جهانی بسیار مفید هستند.

ویژگی‌ها

ویژگی مقدار
نام کامل MODIS Terra Surface Reflectance (MOD09A1)
سال شروع ۲۰۰۰
وضوح مکانی ۵۰۰ متر
عرض پوشش ۲۳۳۰ کیلومتر
چرخه تکرار ۸ روز
منبع داده Microsoft Planetary Computer
هزینه رایگان

باندها

باند نام طول موج (nm) وضوح (m)
red قرمز 620-670 500
green سبز 841-876 500
blue آبی 459-479 500
nir مادون قرمز نزدیک 841-876 500
swir16 مادون قرمز کوتاه 1 1230-1250 500
swir22 مادون قرمز کوتاه 2 1628-1652 500

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

pip install pystac-client planetary-computer

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

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

from pystac_client import Client
import planetary_computer

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

# جستجوی MODIS Terra
search = catalog.search(
    collections=["modis-09A1-061"],
    bbox=[51.0, 35.5, 51.8, 36.0],
    datetime="2023-01-01/2023-12-31",
    query={"id": {"starts_with": "MOD09A1"}},
    max_items=10,
)

for item in search.items():
    print(f"تاریخ: {item.properties['datetime']}")
    print(f"شناسه: {item.id}")
    print("---")

خواندن تصویر

import rasterio
import planetary_computer

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

    # خواندن باند قرمز
    red_href = planetary_computer.sign(item.assets["red"].href)
    with rasterio.open(red_href) as src:
        print(f"ابعاد: {src.width} x {src.height}")
        print(f"وضوح: {src.res[0]} متر")
        data = src.read(1)

محاسبه NDVI

import rasterio
import numpy as np
import planetary_computer

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

red_href = planetary_computer.sign(item.assets["red"].href)
nir_href = planetary_computer.sign(item.assets["nir"].href)

with rasterio.open(red_href) as src:
    red = src.read(1).astype(float)
with rasterio.open(nir_href) as src:
    nir = src.read(1).astype(float)

# محاسبه NDVI
ndvi = (nir - red) / (nir + red + 1e-10)
print(f"NDVI میانگین: {np.mean(ndvi):.3f}")
print(f"NDVI حداکثر: {np.max(ndvi):.3f}")

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