المقياس

إنّ فهم كيفية تعامل Earth Engine مع النطاق أمر بالغ الأهمية لتفسير العلمي النتائج التي يتم الحصول عليها من Earth Engine. ويشير مقياس الصورة هنا إلى درجة دقتها بوحدة البكسل. على عكس منصّات GIS ومعالجة الصور الأخرى، يتم تحديد مقياس التحليل من خلال الإخراج، وليس من خلال الإدخال. على وجه التحديد، عند طلب نتائج أو صورة لعرضها أو إحصاءات، على سبيل المثال، يمكنك تحديد المقياس الذي يتم إدخال البيانات فيه إلى التحليل. يوضّح الشكل 1 هذا المفهوم.

الأهرامات
الشكل 1. تمثيل رسومي لمجموعة بيانات صور في Earth Engine تمثّل الخطوط المنقطة سياسة التجميع في شكل هرم لتجميع الوحدات 2×2 من 4 بكسل. يستخدم محرّك Earth مقياس الحجم المحدّد في الإخراج لتحديد المستوى المناسب من هرم الصور لاستخدامه كإدخال.

أهرامات الصور

تتوفّر مواد عرض الصور في Earth Engine على مستويات متعدّدة، في أهرامات الصور. تحدّد سياسة التجميع (الممثّلة بالخطوط المنقطة في الشكل 1) كيفية احتساب كل بكسل في مستوى معيّن من الهرم من خلال تجميع مجموعة من 2×2 بكسل في المستوى الأدنى التالي. بالنسبة إلى الصور ذات القيم المستمرة، تكون قيم وحدات البكسل للمستويات العليا من الهرم هي متوسط وحدات البكسل في المستوى الأدنى التالي. بالنسبة إلى الصور ذات القيم المنفصلة، تكون قيم وحدات البكسل في المستويات العليا من الهرم عيّنة (عادةً وحدات البكسل في أعلى يمين الصورة) من وحدات البكسل في المستوى الأدنى التالي.

يمثّل أدنى مستوى من هرم الصور بيانات الصورة بدقة أصلية، عند نقلها إلى Earth Engine. أثناء نقل البيانات، يتم تجميعها (وفقًا لسياسة التجميع) لإنشاء مستويات أعلى من الهرم. يتم تجميع البيانات إلى أن تلائم الصورة بأكملها مربّعًا بحجم 256 x ‏256 بكسل. عند استخدام صورة في الرمز البرمجي، يختار Earth Engine مستوى من الهرم باستخدام أقرب مقياس أقل من أو يساوي المقياس المحدّد من خلال التحليل، ويعيد تحليل العينة (باستخدام أقرب جار تلقائيًا) حسب الحاجة.

نطاق التحليل

يتم تحديد نطاق التحليل في Earth Engine استنادًا إلى "السحب". يتم تحديد المقياس الذي يتم عنده طلب مدخلات لإجراء عملية حسابية من خلال الإخراج. على سبيل المثال، إذا أضفت صورة إلى "محرر الرموز" أو عنصر خريطة geemap، يحدّد مستوى تكبير الخريطة المقياس الذي يتمّ طلب الإدخالات من هرم الصور وفقًا له. بالنسبة إلى العمليات الحسابية الأخرى، يمكنك تحديد scale كوسيطة. على سبيل المثال، باستخدام نطاق الأشعة تحت الحمراء القريبة من صورة Landsat التي تبلغ دقتها الأصلية 30 مترًا:

محرِّر الرموز البرمجية (JavaScript)

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

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

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:

محرِّر الرموز البرمجية (JavaScript)

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

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

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 يستخدمان إسقاط maps mercator (EPSG:3857) ، لذا يجب أيضًا إعادة إسقاط المستوى المناسب من هرم الصور قبل عرضه. اطّلِع على مزيد من المعلومات حول كيفية تعامل Earth Engine مع التوقّعات من مستند التوقّعات.