Copernicus DEM GLO-30

مدل ارتفاعی ۳۰ متر کل جهان

Copernicus DEM GLO-30

معرفی

Copernicus DEM یک مدل ارتفاعی دیجیتال جهانی با وضوح ۳۰ متر است که توسط آژانس فضایی اروپا تولید شده. این مدل برای مطالعات ارتفاعی، شیب و هیدرولوژی بسیار مفید است.

ویژگی‌ها

ویژگی مقدار
نام کامل Copernicus DEM GLO-30
وضوح مکانی ۳۰ متر
پوشش کل جهان
ارتفاع -۷۳.۲ تا +۸۲۵۱ متر
دقت عمودی < ۴ متر (LE90)
منبع داده Microsoft Planetary Computer
هزینه رایگان

باند

باند نام توضیح
dem ارتفاع (Elevation) ارتفاع به متر

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

pip install pystac-client planetary-computer rasterio

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

جستجوی کاشی‌های DEM

from pystac_client import Client
import planetary_computer

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

# جستجوی کاشی‌های DEM
search = catalog.search(
    collections=["cop-dem-glo-30"],
    bbox=[51.0, 35.5, 51.8, 36.0],
    max_items=10,
)

for item in search.items():
    print(f"شناسه: {item.id}")
    print(f"آسیب‌پذیری: {item.properties.get('grid:code', 'نامشخص')}")
    print("---")

دانلود و خواندن DEM

import rasterio
import numpy as np
import planetary_computer

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

    # دریافت لینک دانلود
    dem_href = planetary_computer.sign(item.assets["dem"].href)

    with rasterio.open(dem_href) as src:
        dem = src.read(1)
        print(f"ابعاد: {src.width} x {src.height}")
        print(f"CRS: {src.crs}")
        print(f"ارتفاع میانگین: {np.mean(dem):.1f} متر")
        print(f"حداقل ارتفاع: {np.min(dem):.1f} متر")
        print(f"حداکثر ارتفاع: {np.max(dem):.1f} متر")

محاسبه شیب

import rasterio
import numpy as np
from rasterio.transform import array_bounds
import planetary_computer

item = list(search.items())[0]
dem_href = planetary_computer.sign(item.assets["dem"].href)

with rasterio.open(dem_href) as src:
    dem = src.read(1).astype(float)
    transform = src.transform

# محاسبه شیب با روش متفاوت
# تغییرات ارتفاع در راستای x و y
dy, dx = np.gradient(dem, src.res[0])
slope = np.degrees(np.arctan(np.sqrt(dx**2 + dy**2)))
print(f"شیب میانگین: {np.mean(slope):.1f} درجه")
print(f"شیب حداکثر: {np.max(slope):.1f} درجه")

ذخیره DEM به صورت GeoTIFF

import rasterio
from rasterio.transform import from_bounds
import planetary_computer

item = list(search.items())[0]
dem_href = planetary_computer.sign(item.assets["dem"].href)

with rasterio.open(dem_href) as src:
    dem = src.read(1)
    profile = src.profile.copy()

# ذخیره در فایل جدید
with rasterio.open("output_dem.tif", "w", **profile) as dst:
    dst.write(dem, 1)
    print("DEM با موفقیت ذخیره شد: output_dem.tif")

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