סקירה כללית על תמונות

כמו שצוין במסמך תחילת העבודה, נתוני רסטר מיוצגים כאובייקטים מסוג Image ב-Earth Engine. תמונות מורכבות מרצועה אחת או יותר, ולכל רצועה יש שם, סוג נתונים, קנה מידה, מסכה והיטל משלה. לכל תמונה יש מטא-נתונים שמאוחסנים כקבוצת מאפיינים.

‫ee.Image constructor

כדי לטעון תמונות, מדביקים מזהה נכס של Earth Engine ב-constructor של ee.Image. אפשר למצוא את מזהי התמונות בקטלוג הנתונים. לדוגמה, למודל גובה דיגיטלי (NASADEM):

Code Editor (JavaScript)

var loadedImage = ee.Image('NASA/NASADEM_HGT/001');

הגדרה של Python

בדף סביבת Python מפורט מידע על API בשפת Python ועל השימוש ב-geemap לפיתוח אינטראקטיבי.

import ee
import geemap.core as geemap

Colab (Python)

loaded_image = ee.Image('NASA/NASADEM_HGT/001')

שימו לב שאפשר גם למצוא תמונה באמצעות כלי החיפוש של עורך הקוד. כשמייבאים את הנכס, קוד בניית התמונה נכתב בשבילכם בקטע imports של Code Editor. אפשר גם להשתמש במזהה נכס אישי כארגומנט של בנאי ee.Image.

קבלת ee.Image מ-ee.ImageCollection

הדרך הרגילה לקבל תמונה מאוסף היא לסנן את האוסף, עם מסננים בסדר ספציפיות יורד. לדוגמה, כדי להוציא תמונה מתוך אוסף נתוני ההחזרת אור השמש של Sentinel-2:

Code Editor (JavaScript)

var first = ee.ImageCollection('COPERNICUS/S2_SR')
                .filterBounds(ee.Geometry.Point(-70.48, 43.3631))
                .filterDate('2019-01-01', '2019-12-31')
                .sort('CLOUDY_PIXEL_PERCENTAGE')
                .first();
Map.centerObject(first, 11);
Map.addLayer(first, {bands: ['B4', 'B3', 'B2'], min: 0, max: 2000}, 'first');

הגדרה של Python

בדף סביבת Python מפורט מידע על API בשפת Python ועל השימוש ב-geemap לפיתוח אינטראקטיבי.

import ee
import geemap.core as geemap

Colab (Python)

first = (
    ee.ImageCollection('COPERNICUS/S2_SR')
    .filterBounds(ee.Geometry.Point(-70.48, 43.3631))
    .filterDate('2019-01-01', '2019-12-31')
    .sort('CLOUDY_PIXEL_PERCENTAGE')
    .first()
)

# Define a map centered on southern Maine.
m = geemap.Map(center=[43.7516, -70.8155], zoom=11)

# Add the image layer to the map and display it.
m.add_layer(
    first, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 2000}, 'first'
)
display(m)

שימו לב שהמיון מתבצע אחרי הסינון. אל תמיינו את כל האוסף.

תמונות מקובצי GeoTIFF בענן

אפשר להשתמש ב-ee.Image.loadGeoTIFF() כדי לטעון תמונות מ-Cloud Optimized GeoTIFFs ב-Google Cloud Storage. לדוגמה, מערך הנתונים הציבורי של Landsat שמתארח ב-Google Cloud מכיל את הקובץ GeoTIFF הזה, שמתאים לשכבת הנתונים 5 מסצנת Landsat 8. אפשר לטעון את התמונה הזו מ-Cloud Storage באמצעות ee.Image.loadGeoTIFF():

Code Editor (JavaScript)

var uri = 'gs://gcp-public-data-landsat/LC08/01/001/002/' +
    'LC08_L1GT_001002_20160817_20170322_01_T2/' +
    'LC08_L1GT_001002_20160817_20170322_01_T2_B5.TIF';
var cloudImage = ee.Image.loadGeoTIFF(uri);
print(cloudImage);

הגדרה של Python

בדף סביבת Python מפורט מידע על API בשפת Python ועל השימוש ב-geemap לפיתוח אינטראקטיבי.

import ee
import geemap.core as geemap

‫Colab (Python)

uri = (
    'gs://gcp-public-data-landsat/LC08/01/001/002/'
    + 'LC08_L1GT_001002_20160817_20170322_01_T2/'
    + 'LC08_L1GT_001002_20160817_20170322_01_T2_B5.TIF'
)
cloud_image = ee.Image.loadGeoTIFF(uri)
display(cloud_image)

שימו לב: אם אתם רוצים לטעון מחדש קובץ GeoTIFF שעבר אופטימיזציה לענן, שייצאתם מ-Earth Engine ל-Cloud Storage, כשאתם מבצעים את הייצוא, הגדירו את cloudOptimized כ-true, כמו שמתואר כאן.

הערה לגבי ביצועים: כדי ליהנות מביצועים אופטימליים, מומלץ לרשום את נתוני עלות המכירה כנכסים במקום לטעון אותם ישירות באמצעות ee.Image.loadGeoTIFF(). פרטים והשוואה מופיעים בסקירה הכללית על Cloud optimized GeoTIFF (COG).

תמונות ממערכים של Zarr v2

אתם יכולים להשתמש ב-ee.Image.loadZarrV2Array() כדי לטעון תמונה ממערך Zarr v2 ב-Google Cloud Storage. לדוגמה, קבוצת הנתונים הציבורית של ERA5 שמתארחת ב-Google Cloud מכילה את המערך הזה של Zarr v2, שתואם למטרים של מים שהתאדו מפני השטח של כדור הארץ. אפשר לטעון את המערך הזה מ-Cloud Storage באמצעות ee.Image.loadZarrV2Array():

Code Editor (JavaScript)

var timeStart = 1000000;
var timeEnd = 1000010;
var zarrV2ArrayImage = ee.Image.loadZarrV2Array({
  uri:
      'gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3/evaporation/.zarray',
  proj: 'EPSG:4326',
  starts: [timeStart],
  ends: [timeEnd]
});
print(zarrV2ArrayImage);
Map.addLayer(zarrV2ArrayImage, {min: -0.0001, max: 0.00005}, 'Evaporation');

הגדרה של Python

בדף סביבת Python מפורט מידע על API בשפת Python ועל השימוש ב-geemap לפיתוח אינטראקטיבי.

import ee
import geemap.core as geemap

Colab (Python)

time_start = 1000000
time_end = 1000010
zarr_v2_array_image = ee.Image.loadZarrV2Array(
    uri='gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3/evaporation/.zarray',
    proj='EPSG:4326',
    starts=[time_start],
    ends=[time_end],
)

display(zarr_v2_array_image)

m.add_layer(
    zarr_v2_array_image, {'min': -0.0001, 'max': 0.00005}, 'Evaporation'
)
m

תמונות קבועות

בנוסף לטעינת תמונות לפי מזהה, אפשר גם ליצור תמונות מקבועים, מרשימות או מאובייקטים מתאימים אחרים של Earth Engine. הדוגמה הבאה ממחישה שיטות ליצירת תמונות, לקבלת קבוצות משנה של רצועות ולשינוי רצועות:

Code Editor (JavaScript)

// Create a constant image.
var image1 = ee.Image(1);
print(image1);

// Concatenate two images into one multi-band image.
var image2 = ee.Image(2);
var image3 = ee.Image.cat([image1, image2]);
print(image3);

// Create a multi-band image from a list of constants.
var multiband = ee.Image([1, 2, 3]);
print(multiband);

// Select and (optionally) rename bands.
var renamed = multiband.select(
    ['constant', 'constant_1', 'constant_2'], // old names
    ['band1', 'band2', 'band3']               // new names
);
print(renamed);

// Add bands to an image.
var image4 = image3.addBands(ee.Image(42));
print(image4);

הגדרה של Python

בדף סביבת Python מפורט מידע על API בשפת Python ועל השימוש ב-geemap לפיתוח אינטראקטיבי.

import ee
import geemap.core as geemap

‫Colab (Python)

# Create a constant image.
image_1 = ee.Image(1)
display(image_1)

# Concatenate two images into one multi-band image.
image_2 = ee.Image(2)
image_3 = ee.Image.cat([image_1, image_2])
display(image_3)

# Create a multi-band image from a list of constants.
multiband = ee.Image([1, 2, 3])
display(multiband)

# Select and (optionally) rename bands.
renamed = multiband.select(
    ['constant', 'constant_1', 'constant_2'],  # old names
    ['band1', 'band2', 'band3'],  # new names
)
display(renamed)

# Add bands to an image.
image_4 = image_3.addBands(ee.Image(42))
display(image_4)