عملیات رابطه ای، شرطی و بولی، عملیات رابطه ای، شرطی و بولی

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

عملگرهای رابطه ای و بولی

روش های رابطه ای عبارتند از:

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

روش های بولی عبارتند از:

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

and() ، or() ، و not()

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

And() ، Or() و Not()

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

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

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

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

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

import ee
import geemap.core as geemap

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

# 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() مناطق شهرنشینی را در تصویر چراغ‌های شبانه ایجاد می‌کند:

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

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

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

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

import ee
import geemap.core as geemap

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

# 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() پیاده سازی شده است:

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

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

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

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

import ee
import geemap.core as geemap

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

# 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() به جای فرهنگ لغت نام متغیرها ارجاع داده شده است. در این صفحه درباره عبارات تصویر بیشتر بیاموزید. استفاده از عملگرهای ریاضی یا یک عبارت همان نتیجه را ایجاد می کند.

مشروط_پاریس
مناطق دلخواه از تصاویر نور شبانه ۲۰۱۲ برای پاریس، فرانسه.

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

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

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

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

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

import ee
import geemap.core as geemap

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

# 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)
،

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

عملگرهای رابطه ای و بولی

روش های رابطه ای عبارتند از:

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

روش های بولی عبارتند از:

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

and() ، or() ، و not()

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

And() ، Or() و Not()

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

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

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

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

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

import ee
import geemap.core as geemap

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

# 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() مناطق شهرنشینی را در تصویر چراغ‌های شبانه ایجاد می‌کند:

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

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

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

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

import ee
import geemap.core as geemap

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

# 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() پیاده سازی شده است:

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

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

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

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

import ee
import geemap.core as geemap

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

# 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() به جای فرهنگ لغت نام متغیرها ارجاع داده شده است. در این صفحه درباره عبارات تصویر بیشتر بیاموزید. استفاده از عملگرهای ریاضی یا یک عبارت همان نتیجه را ایجاد می کند.

مشروط_پاریس
مناطق دلخواه از تصاویر نور شبانه ۲۰۱۲ برای پاریس، فرانسه.

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

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

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

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

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

import ee
import geemap.core as geemap

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

# 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)