العمليات الحسابية والشرطية والمنطقية

تحتوي عناصر ee.Image على مجموعة من الطرق الارتباطية والشرطية والسلفية ل إنشاء تعبيرات صنع القرار. تكون نتائج هذه الطرق مفيدة في حصر التحليل بوحدات بكسل أو مناطق معيّنة من خلال حجب البيانات وتطوير خرائط مصنّفة وإعادة تحديد القيم.

عوامل التشغيل الارتباطية والمنطقية

تشمل الطرق الارتباطية ما يلي:

eq() وgt() وgte() وlt() و lte()

تشمل طرق القيمة المنطقية ما يلي:

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

and() وor() وnot()

Colab (Python)

And() وOr() وNot()

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

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

// Load a Landsat 8 image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Create NDVI and NDWI spectral indices.
var ndvi = image.normalizedDifference(['B5', 'B4']);
var ndwi = image.normalizedDifference(['B3', 'B5']);

// Create a binary layer using logical operations.
var bare = ndvi.lt(0.2).and(ndwi.lt(0));

// Mask and display the binary layer.
Map.setCenter(-122.3578, 37.7726, 12);
Map.setOptions('satellite');
Map.addLayer(bare.selfMask(), {}, 'bare');

إعداد لغة Python

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

import ee
import geemap.core as geemap

Colab (Python)

# Load a Landsat 8 image.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')

# Create NDVI and NDWI spectral indices.
ndvi = image.normalizedDifference(['B5', 'B4'])
ndwi = image.normalizedDifference(['B3', 'B5'])

# Create a binary layer using logical operations.
bare = ndvi.lt(0.2).And(ndwi.lt(0))

# Define a map centered on San Francisco Bay.
map_bare = geemap.Map(center=[37.7726, -122.3578], zoom=12)

# Add the masked image layer to the map and display it.
map_bare.add_layer(bare.selfMask(), None, 'bare')
display(map_bare)

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

relational_sf
مؤشر NDVI منخفض ومؤشر NDWI منخفض (أبيض) من Landsat 8، سان فرانسيسكو، كاليفورنيا، الولايات المتحدة.

يمكن استخدام الصور الثنائية التي تعرضها عوامل التشغيل المنطقية والعلائقية مع عوامل التشغيل الرياضية. ينشئ هذا المثال مناطق حضرية في صورة أضواء ليلية باستخدام عوامل التشغيل الارتباطية وadd():

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

// Load a 2012 nightlights image.
var nl2012 = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F182012');
var lights = nl2012.select('stable_lights');

// Define arbitrary thresholds on the 6-bit stable lights band.
var zones = lights.gt(30).add(lights.gt(55)).add(lights.gt(62));

// Display the thresholded image as three distinct zones near Paris.
var palette = ['000000', '0000FF', '00FF00', 'FF0000'];
Map.setCenter(2.373, 48.8683, 8);
Map.addLayer(zones, {min: 0, max: 3, palette: palette}, 'development zones');

إعداد لغة Python

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

import ee
import geemap.core as geemap

Colab (Python)

# Load a 2012 nightlights image.
nl_2012 = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F182012')
lights = nl_2012.select('stable_lights')

# Define arbitrary thresholds on the 6-bit stable lights band.
zones = lights.gt(30).add(lights.gt(55)).add(lights.gt(62))

# Define a map centered on Paris, France.
map_zones = geemap.Map(center=[48.8683, 2.373], zoom=8)

# Display the thresholded image as three distinct zones near Paris.
palette = ['000000', '0000FF', '00FF00', 'FF0000']
map_zones.add_layer(
    zones, {'min': 0, 'max': 3, 'palette': palette}, 'development zones'
)
display(map_zones)

عوامل التشغيل الشَرطية

يُرجى العِلم أنّ الرمز البرمجي في المثال السابق يعادل استخدام عامل تشغيل ثلاثي تم تنفيذه باستخدام expression():

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

// Create zones using an expression, display.
var zonesExp = nl2012.expression(
    "(b('stable_lights') > 62) ? 3" +
      ": (b('stable_lights') > 55) ? 2" +
        ": (b('stable_lights') > 30) ? 1" +
          ": 0"
);
Map.addLayer(zonesExp,
             {min: 0, max: 3, palette: palette},
             'development zones (ternary)');

إعداد لغة Python

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

import ee
import geemap.core as geemap

Colab (Python)

# Create zones using an expression, display.
zones_exp = nl_2012.expression(
    "(b('stable_lights') > 62) ? 3 "
    ": (b('stable_lights') > 55) ? 2 "
    ": (b('stable_lights') > 30) ? 1 "
    ': 0'
)

# Define a map centered on Paris, France.
map_zones_exp = geemap.Map(center=[48.8683, 2.373], zoom=8)

# Add the image layer to the map and display it.
map_zones_exp.add_layer(
    zones_exp, {'min': 0, 'max': 3, 'palette': palette}, 'zones exp'
)
display(map_zones_exp)

يُرجى ملاحظة أنّه في مثال التعبير السابق، تتم الإشارة إلى النطاق الذي يهمّك باستخدام الدالة b() بدلاً من قاموس بأسماء المتغيّرات. اطّلِع على مزيد من المعلومات عن تعبيرات الصور على هذه الصفحة. سيؤدي استخدام عوامل التشغيل الحسابية أو تعبير إلى تحقيق النتيجة نفسها.

conditional_paris
مناطق عشوائية من صور أضواء الليل لعام 2012 في باريس، فرنسا

هناك طريقة أخرى لتنفيذ العمليات الشَرطية على الصور وهي استخدام عامل التشغيل where(). ننصحك بالتفكير في ضرورة استبدال البكسلات التي تم حجبها ببعض البيانات الأخرى. في المثال التالي، يتم استبدال وحدات البكسل التي تحتوي على غيوم بوحدات بكسل من صورة خالية من الغيوم باستخدام where():

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

// Load a cloudy Sentinel-2 image.
var image = ee.Image(
  'COPERNICUS/S2_SR/20210114T185729_20210114T185730_T10SEG');
Map.addLayer(image,
             {bands: ['B4', 'B3', 'B2'], min: 0, max: 2000},
             'original image');

// Load another image to replace the cloudy pixels.
var replacement = ee.Image(
  'COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG');

// Set cloudy pixels (greater than 5% probability) to the other image.
var replaced = image.where(image.select('MSK_CLDPRB').gt(5), replacement);

// Display the result.
Map.setCenter(-122.3769, 37.7349, 11);
Map.addLayer(replaced,
             {bands: ['B4', 'B3', 'B2'], min: 0, max: 2000},
             'clouds replaced');

إعداد لغة Python

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

import ee
import geemap.core as geemap

Colab (Python)

# Load a cloudy Sentinel-2 image.
image = ee.Image('COPERNICUS/S2_SR/20210114T185729_20210114T185730_T10SEG')

# Load another image to replace the cloudy pixels.
replacement = ee.Image(
    'COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG'
)

# Set cloudy pixels (greater than 5% probability) to the other image.
replaced = image.where(image.select('MSK_CLDPRB').gt(5), replacement)

# Define a map centered on San Francisco Bay.
map_replaced = geemap.Map(center=[37.7349, -122.3769], zoom=11)

# Display the images on a map.
vis_params = {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 2000}
map_replaced.add_layer(image, vis_params, 'original image')
map_replaced.add_layer(replaced, vis_params, 'clouds replaced')
display(map_replaced)