Objek ee.Image
memiliki kumpulan metode relasional, kondisional, dan boolean untuk
membuat ekspresi pengambilan keputusan. Hasil metode ini berguna untuk membatasi
analisis ke piksel atau wilayah tertentu melalui masking, mengembangkan peta yang diklasifikasikan, dan penetapan ulang
nilai.
Operator relasional dan boolean
Metode Relasi meliputi:
eq()
, gt()
, gte()
, lt()
, dan
lte()
Metode Boolean mencakup:
Editor Kode (JavaScript)
and()
,or()
, dan not()
Colab (Python)
And()
,Or()
, dan Not()
Untuk melakukan perbandingan per piksel antargambar, gunakan operator relasional. Untuk mengekstrak area perkotaan dalam gambar, contoh ini menggunakan operator relasional untuk nilai minimum indeks spektral, yang menggabungkan nilai minimum dengan operator and:
Editor Kode (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');
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)
Seperti yang diilustrasikan oleh contoh ini, output operator relasional dan boolean adalah
benar (1) atau salah (0). Untuk menyamarkan 0, Anda dapat menyamarkan gambar biner yang dihasilkan
dengan dirinya sendiri menggunakan selfMask()
.
Gambar biner yang ditampilkan oleh operator relasional dan boolean dapat digunakan dengan
operator matematika. Contoh ini membuat zona urbanisasi dalam gambar lampu
malam hari menggunakan operator relasional dan add()
:
Editor Kode (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');
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)
Operator bersyarat
Perhatikan bahwa kode dalam contoh sebelumnya setara dengan menggunakan
operator ternary yang diimplementasikan oleh
expression()
:
Editor Kode (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)');
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)
Perhatikan bahwa dalam contoh ekspresi sebelumnya, band yang diinginkan direferensikan menggunakan
fungsi b()
, bukan kamus nama variabel. Pelajari lebih lanjut
ekspresi gambar di
halaman ini. Menggunakan operator matematika atau ekspresi akan menghasilkan hasil yang sama.
Cara lain untuk menerapkan operasi bersyarat pada gambar adalah dengan
operator where()
. Pertimbangkan perlunya mengganti piksel yang disamarkan dengan beberapa
data lainnya. Dalam contoh berikut, piksel berawan diganti dengan piksel dari gambar bebas awan menggunakan where()
:
Editor Kode (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');
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)