ee.Image
-Objekte haben eine Reihe relationaler, bedingter und boolescher Methoden zum Erstellen von Entscheidungsausdrücken. Die Ergebnisse dieser Methoden sind nützlich, um die Analyse durch Maskieren, Erstellen klassifizierter Karten und Neuzuweisung von Werten auf bestimmte Pixel oder Regionen einzugrenzen.
Relationale und boolesche Operatoren
Zu den relationalen Methoden gehören:
eq()
, gt()
, gte()
, lt()
und
lte()
Zu den booleschen Methoden gehören:
Code-Editor (JavaScript)
and()
, or()
und not()
Colab (Python)
And()
, Or()
und Not()
Verwenden Sie relationale Operatoren, um Pixelvergleiche zwischen Bildern durchzuführen. Um bebaute Gebiete in einem Bild zu extrahieren, werden in diesem Beispiel relationale Operatoren verwendet, um Spektralindices zu steuern. Die Grenzwerte werden mit dem Operator and kombiniert:
Code-Editor (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)
Wie in diesem Beispiel dargestellt, ist die Ausgabe von relationalen und booleschen Operatoren entweder „wahr“ (1) oder „falsch“ (0). Um die Nullen zu maskieren, können Sie das resultierende Binärbild mit selfMask()
mit sich selbst maskieren.
Die Binärbilder, die von relationalen und booleschen Operatoren zurückgegeben werden, können mit mathematischen Operatoren verwendet werden. In diesem Beispiel werden mithilfe von relationalen Operatoren und add()
Zonen der Urbanisierung in einem Bild mit nächtlichen Lichtern erstellt:
Code-Editor (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)
Bedingungsoperatoren
Der Code im vorherigen Beispiel entspricht der Verwendung eines ternären Operators, der von expression()
implementiert wird:
Code-Editor (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)
Beachten Sie, dass im vorherigen Ausdrucksbeispiel auf den gewünschten Band mithilfe der Funktion b()
verwiesen wird und nicht mit einem Wörterbuch mit Variablennamen. Weitere Informationen zu Bildausdrücken Mit mathematischen Operatoren oder einem Ausdruck wird dasselbe Ergebnis erzielt.
Eine weitere Möglichkeit, bedingte Vorgänge auf Bilder anzuwenden, ist der Operator where()
. Berücksichtigen Sie, dass maskierte Pixel durch andere Daten ersetzt werden müssen. Im folgenden Beispiel werden bewölkte Pixel mithilfe von where()
durch Pixel aus einem wolkenlosen Bild ersetzt:
Code-Editor (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)