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

כפי שצוין במסמך תחילת העבודה, נתוני רסטר מיוצגים כאובייקטים מסוג 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')

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

איך מקבלים ee.Image מ-ee.ImageCollection

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

Code Editor (JavaScript)

var first = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
                .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_HARMONIZED')
    .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 (COGs)‎ ב-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)

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

הערה לגבי ביצועים: כדי ליהנות מביצועים אופטימליים, מומלץ לרשום את קובצי ה-COG כנכסים במקום לטעון אותם ישירות באמצעות 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)