مقیاس

درک اینکه موتور زمین چگونه مقیاس را کنترل می کند برای تفسیر نتایج علمی به دست آمده از موتور زمین بسیار مهم است. در اینجا مقیاس به معنای وضوح پیکسل است. بر خلاف سایر سیستم‌عامل‌های GIS و پردازش تصویر، مقیاس تحلیل به جای ورودی، از خروجی تعیین می‌شود. به طور خاص، هنگامی که برای مثال، یک تصویر برای نمایش یا یک آمار درخواستی می‌کنید، مقیاسی را مشخص می‌کنید که در آن داده‌ها به تجزیه و تحلیل وارد می‌شوند. این مفهوم در شکل 1 نشان داده شده است.

اهرام
شکل 1. یک نمایش گرافیکی از مجموعه داده های تصویر در Earth Engine. خطوط چین نشان دهنده خط مشی هرمی برای تجمیع بلوک های 2x2 از 4 پیکسل است. Earth Engine از مقیاس مشخص شده توسط خروجی برای تعیین سطح مناسب هرم تصویر برای استفاده به عنوان ورودی استفاده می کند.

اهرام تصویری

دارایی های تصویر در Earth Engine در مقیاس های متعدد، در اهرام تصویر وجود دارد. خط مشی هرمی (که با خطوط چین در شکل 1 نشان داده شده است) تعیین می کند که چگونه هر پیکسل در سطح معینی از هرم از تجمع یک بلوک 2×2 پیکسل در سطح پایین تر بعدی محاسبه می شود. برای تصاویر با ارزش پیوسته، مقادیر پیکسل سطوح بالایی هرم، میانگین پیکسل ها در سطح پایین بعدی است. برای تصاویر با ارزش گسسته، مقادیر پیکسل سطوح بالایی هرم نمونه ای (معمولاً پیکسل بالا سمت چپ) از پیکسل ها در سطح پایین بعدی است.

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

مقیاس تحلیل

مقیاس تجزیه و تحلیل در Earth Engine بر اساس "کشش" تعیین می شود. مقیاس درخواست ورودی برای محاسبات از خروجی تعیین می شود. به عنوان مثال، اگر تصویری را به ویرایشگر کد یا عنصر نقشه geemap اضافه کنید، سطح بزرگنمایی نقشه مقیاسی را تعیین می کند که در آن ورودی ها از هرم تصویر درخواست می شود. برای محاسبات دیگر، scale به عنوان آرگومان مشخص می کنید. به عنوان مثال، با استفاده از باند NIR یک تصویر Landsat که دارای وضوح 30 متری است:

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

var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4');

var printAtScale = function(scale) {
  print('Pixel value at '+scale+' meters scale',
    image.reduceRegion({
      reducer: ee.Reducer.first(),
      geometry: image.geometry().centroid(),
      // The scale determines the pyramid level from which to pull the input
      scale: scale
  }).get('B4'));
};

printAtScale(10); // 0.10394100844860077
printAtScale(30); // 0.10394100844860077
printAtScale(50); // 0.09130698442459106
printAtScale(70); // 0.1150854229927063
printAtScale(200); // 0.102478988468647
printAtScale(500); // 0.09072770178318024

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

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

import ee
import geemap.core as geemap

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

image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4')


def print_at_scale(scale):
  display(
      f'Pixel value at {scale} meters scale',
      image.reduceRegion(
          reducer=ee.Reducer.first(),
          geometry=image.geometry().centroid(),
          # The scale determines the pyramid level from which to pull the input
          scale=scale,
      ).get('B4'),
  )


print_at_scale(10)  # 0.10394100844860077
print_at_scale(30)  # 0.10394100844860077
print_at_scale(50)  # 0.09130698442459106
print_at_scale(70)  # 0.1150854229927063
print_at_scale(200)  # 0.102478988468647
print_at_scale(500)  # 0.09072770178318024

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

هنگامی که تصویری را با افزودن آن به نقشه تجسم می کنید، Earth Engine مقیاس را از سطح زوم تعیین می کند. مثال ساده زیر را در نظر بگیرید که به سادگی تصویر Landsat را نمایش می دهد:

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

var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');
Map.centerObject(image, 17);
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.35}, 'image');

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

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

import ee
import geemap.core as geemap

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

image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')
m = geemap.Map()
m.center_object(image, 17)
m.add_layer(image, {'bands': ['B4', 'B3', 'B2'], 'max': 0.35}, 'image')
m

نقشه تا آخر بزرگ‌نمایی می‌شود، به طوری که پیکسل‌های وضوح اصلی به وضوح قابل مشاهده هستند. بزرگنمایی به اندازه کافی پیکسل ها را نمایش نمی دهد، بلکه سطوح بالاتری از هرم تصویر را نمایش می دهد. همچنین شایان ذکر است که ویرایشگر کد و نقشه‌های geemap از پیش‌بینی نقشه‌ها (EPSG:3857) استفاده می‌کنند، بنابراین سطح مناسب هرم تصویر نیز باید قبل از نمایش دوباره نمایش داده شود. از سند پیش‌بینی‌ها درباره نحوه مدیریت پیش‌بینی‌ها توسط Earth Engine بیشتر بیاموزید.