آرایه ها و تصاویر آرایه، آرایه ها و تصاویر آرایه

آرایه ها در Earth Engine از لیست اعداد و لیست لیست ها ساخته می شوند. درجه لانه سازی تعداد ابعاد را تعیین می کند. برای شروع با یک مثال ساده و با انگیزه، مثال زیر از Array ای که از ضرایب کلاهک منگوله دار (TC) Landsat 8 ایجاد شده است را در نظر بگیرید ( Baig et al., 2014 ):

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

// Create an Array of Tasseled Cap coefficients.
var coefficients = ee.Array([
  [0.3029, 0.2786, 0.4733, 0.5599, 0.508, 0.1872],
  [-0.2941, -0.243, -0.5424, 0.7276, 0.0713, -0.1608],
  [0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559],
  [-0.8239, 0.0849, 0.4396, -0.058, 0.2013, -0.2773],
  [-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],
  [0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252],
]);

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

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

import ee
import geemap.core as geemap

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

# Create an Array of Tasseled Cap coefficients.
coefficients = ee.Array([
    [0.3029, 0.2786, 0.4733, 0.5599, 0.508, 0.1872],
    [-0.2941, -0.243, -0.5424, 0.7276, 0.0713, -0.1608],
    [0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559],
    [-0.8239, 0.0849, 0.4396, -0.058, 0.2013, -0.2773],
    [-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],
    [0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252],
])

تأیید کنید که این یک آرایه 2 بعدی 6x6 با استفاده از length() است که طول هر محور را برمی گرداند:

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

// Print the dimensions.
print(coefficients.length()); //    [6,6]

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

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

import ee
import geemap.core as geemap

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

# Print the dimensions.
display(coefficients.length())  #    [6,6]

جدول زیر ترتیب ورودی های ماتریس را در امتداد محور 0 و محور 1 نشان می دهد:

1 محور ->
0 1 2 3 4 5
0 0.3029 0.2786 0.4733 0.5599 0.508 0.1872
1 -0.2941 -0.243 -0.5424 0.7276 0.0713 -0.1608
0-محور 2 0.1511 0.1973 0.3283 0.3407 -0.7117 -0.4559
3 -0.8239 0.0849 0.4396 -0.058 0.2013 -0.2773
4 -0.3294 0.0557 0.1056 0.1855 -0.4349 0.8085
5 0.1079 -0.9023 0.4119 0.0575 -0.0259 0.0252

شاخص های سمت چپ جدول موقعیت ها را در امتداد محور 0 نشان می دهد. عنصر n در هر لیست در محور 0 در موقعیت n در امتداد محور 1 قرار دارد. برای مثال، ورودی در مختصات [3،1] آرایه 0.0849 است. فرض کنید "سبز بودن" جزء TC مورد علاقه است. می توانید زیر ماتریس سبز بودن را با استفاده از slice() بدست آورید:

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

// Get the 1x6 greenness slice, display it.
var greenness = coefficients.slice({axis: 0, start: 1, end: 2, step: 1});
print(greenness);

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

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

import ee
import geemap.core as geemap

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

# Get the 1x6 greenness slice, display it.
greenness = coefficients.slice(axis=0, start=1, end=2, step=1)
display(greenness)

ماتریس سبزی دوبعدی باید چیزی شبیه به زیر باشد:

[[-0.2941,-0.243,-0.5424,0.7276,0.0713,-0.1608]]
    

توجه داشته باشید که پارامترهای start و end slice() با شاخص های محور صفر نمایش داده شده در جدول مطابقت دارند ( start شامل و end انحصاری است).

آرایه تصاویر

برای به دست آوردن یک تصویر سبز، ماتریس باندهای تصویر لندست 8 را در ماتریس سبز بودن ضرب کنید. برای انجام این کار، ابتدا تصویر چند باندی Landsat را به یک "Array Image" تبدیل کنید، جایی که هر پیکسل Array ای از مقادیر باند است. به عنوان مثال:

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

// Load a Landsat 8 image, select the bands of interest.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')
  .select(['B2', 'B3', 'B4', 'B5', 'B6', 'B7']);

// Make an Array Image, with a 1-D Array per pixel.
var arrayImage1D = image.toArray();

// Make an Array Image with a 2-D Array per pixel, 6x1.
var arrayImage2D = arrayImage1D.toArray(1);

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

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

import ee
import geemap.core as geemap

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

# Load a Landsat 8 image, select the bands of interest.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select(
    ['B2', 'B3', 'B4', 'B5', 'B6', 'B7']
)

# Make an Array Image, with a 1-D Array per pixel.
array_image_1d = image.toArray()

# Make an Array Image with a 2-D Array per pixel, 6x1.
array_image_2d = array_image_1d.toArray(1)

در این مثال، توجه داشته باشید که toArray() image به یک تصویر آرایه ای تبدیل می کند که در آن هر پیکسل یک بردار 1 بعدی است که ورودی های آن با 6 مقدار در موقعیت های مربوطه در باندهای image مطابقت دارد. تصویر آرایه ای از بردارهای 1 بعدی ایجاد شده به این روش مفهومی از شکل دو بعدی ندارد. برای انجام عملیات فقط دو بعدی مانند ضرب ماتریس، آن را با استفاده از toArray(1) به یک تصویر آرایه دو بعدی در هر پیکسل تبدیل کنید. در هر پیکسل از تصویر آرایه دو بعدی، یک ماتریس 6x1 از مقادیر باند وجود دارد. برای مشاهده این موضوع به مثال اسباب بازی زیر توجه کنید:

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

var array1D = ee.Array([1, 2, 3]);              // [1,2,3]
var array2D = ee.Array.cat([array1D], 1);     // [[1],[2],[3]]

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

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

import ee
import geemap.core as geemap

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

array_1d = ee.Array([1, 2, 3])  # [1,2,3]
array_2d = ee.Array.cat([array_1d], 1)  # [[1],[2],[3]]

توجه کنید که بردار array1D در امتداد محور 0 تغییر می کند. ماتریس array2D نیز این کار را انجام می دهد، اما یک بعد اضافی دارد. فراخوانی toArray(1) در تصویر آرایه مانند فراخوانی cat(bandVector, 1) روی هر پیکسل است. با استفاده از تصویر آرایه دوبعدی، در سمت چپ ضرب در تصویری که هر پیکسل حاوی یک ماتریس دو بعدی از ضرایب سبزی است:

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

// Do a matrix multiplication: 1x6 times 6x1.
// Cast the greenness Array to an Image prior to multiplication.
var greennessArrayImage = ee.Image(greenness).matrixMultiply(arrayImage2D);

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

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

import ee
import geemap.core as geemap

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

# Do a matrix multiplication: 1x6 times 6x1.
# Cast the greenness Array to an Image prior to multiplication.
greenness_array_image = ee.Image(greenness).matrixMultiply(array_image_2d)

نتیجه یک تصویر آرایه جدید است که در آن هر پیکسل ماتریس 1x1 است که از ضرب ماتریس سبزی 1x6 (چپ) و ماتریس باند 6x1 (راست) حاصل می شود. برای اهداف نمایش، با arrayGet() به یک تصویر معمولی و یک باند تبدیل کنید:

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

// Get the result from the 1x1 array in each pixel of the 2-D array image.
var greennessImage = greennessArrayImage.arrayGet([0, 0]);

// Display the input imagery with the greenness result.
Map.setCenter(-122.3, 37.562, 10);
Map.addLayer(image, {bands: ['B5', 'B4', 'B3'], min: 0, max: 0.5}, 'image');
Map.addLayer(greennessImage, {min: -0.1, max: 0.13}, 'greenness');

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

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

import ee
import geemap.core as geemap

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

# Get the result from the 1x1 array in each pixel of the 2-D array image.
greenness_image = greenness_array_image.arrayGet([0, 0])

# Display the input imagery with the greenness result.
m = geemap.Map()
m.set_center(-122.3, 37.562, 10)
m.add_layer(image, {'bands': ['B5', 'B4', 'B3'], 'min': 0, 'max': 0.5}, 'image')
m.add_layer(greenness_image, {'min': -0.1, 'max': 0.13}, 'greenness')
m

در اینجا یک مثال کامل آورده شده است که از کل آرایه ضرایب برای محاسبه همزمان چندین مؤلفه کلاهک منگوله ای و نمایش نتیجه استفاده می کند:

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

// Define an Array of Tasseled Cap coefficients.
var coefficients = ee.Array([
  [0.3029, 0.2786, 0.4733, 0.5599, 0.508, 0.1872],
  [-0.2941, -0.243, -0.5424, 0.7276, 0.0713, -0.1608],
  [0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559],
  [-0.8239, 0.0849, 0.4396, -0.058, 0.2013, -0.2773],
  [-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],
  [0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252],
]);

// Load a Landsat 8 image, select the bands of interest.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')
  .select(['B2', 'B3', 'B4', 'B5', 'B6', 'B7']);

// Make an Array Image, with a 1-D Array per pixel.
var arrayImage1D = image.toArray();

// Make an Array Image with a 2-D Array per pixel, 6x1.
var arrayImage2D = arrayImage1D.toArray(1);

// Do a matrix multiplication: 6x6 times 6x1.
var componentsImage = ee.Image(coefficients)
  .matrixMultiply(arrayImage2D)
  // Get rid of the extra dimensions.
  .arrayProject([0])
  .arrayFlatten(
    [['brightness', 'greenness', 'wetness', 'fourth', 'fifth', 'sixth']]);

// Display the first three bands of the result and the input imagery.
var vizParams = {
  bands: ['brightness', 'greenness', 'wetness'],
  min: -0.1, max: [0.5, 0.1, 0.1]
};
Map.setCenter(-122.3, 37.562, 10);
Map.addLayer(image, {bands: ['B5', 'B4', 'B3'], min: 0, max: 0.5}, 'image');
Map.addLayer(componentsImage, vizParams, 'components');

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

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

import ee
import geemap.core as geemap

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

# Define an Array of Tasseled Cap coefficients.
coefficients = ee.Array([
    [0.3029, 0.2786, 0.4733, 0.5599, 0.508, 0.1872],
    [-0.2941, -0.243, -0.5424, 0.7276, 0.0713, -0.1608],
    [0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559],
    [-0.8239, 0.0849, 0.4396, -0.058, 0.2013, -0.2773],
    [-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],
    [0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252],
])

# Load a Landsat 8 image, select the bands of interest.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select(
    ['B2', 'B3', 'B4', 'B5', 'B6', 'B7']
)

# Make an Array Image, with a 1-D Array per pixel.
array_image_1d = image.toArray()

# Make an Array Image with a 2-D Array per pixel, 6x1.
array_image_2d = array_image_1d.toArray(1)

# Do a matrix multiplication: 6x6 times 6x1.
components_image = (
    ee.Image(coefficients)
    .matrixMultiply(array_image_2d)
    # Get rid of the extra dimensions.
    .arrayProject([0])
    .arrayFlatten(
        [['brightness', 'greenness', 'wetness', 'fourth', 'fifth', 'sixth']]
    )
)

# Display the first three bands of the result and the input imagery.
viz_params = {
    'bands': ['brightness', 'greenness', 'wetness'],
    'min': -0.1,
    'max': [0.5, 0.1, 0.1],
}
m = geemap.Map()
m.set_center(-122.3, 37.562, 10)
m.add_layer(image, {'bands': ['B5', 'B4', 'B3'], 'min': 0, 'max': 0.5}, 'image')
m.add_layer(components_image, viz_params, 'components')
m

توجه داشته باشید که هنگام گرفتن نوارها از یک تصویر آرایه، ابتدا با project() از شر ابعاد اضافی خلاص شوید، سپس با arrayFlatten() آن را به یک تصویر معمولی تبدیل کنید. خروجی باید چیزی شبیه به این باشد:

تصویر کلاهک منگوله دار
شکل 1. اجزای کلاهک منگوله ای "روشنی" (قرمز)، "سبز بودن" (سبز) و "مرطوبی" (آبی).
،

آرایه ها در Earth Engine از لیست اعداد و لیست لیست ها ساخته می شوند. درجه لانه سازی تعداد ابعاد را تعیین می کند. برای شروع با یک مثال ساده و با انگیزه، مثال زیر از Array ای که از ضرایب کلاهک منگوله دار (TC) Landsat 8 ایجاد شده است را در نظر بگیرید ( Baig et al., 2014 ):

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

// Create an Array of Tasseled Cap coefficients.
var coefficients = ee.Array([
  [0.3029, 0.2786, 0.4733, 0.5599, 0.508, 0.1872],
  [-0.2941, -0.243, -0.5424, 0.7276, 0.0713, -0.1608],
  [0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559],
  [-0.8239, 0.0849, 0.4396, -0.058, 0.2013, -0.2773],
  [-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],
  [0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252],
]);

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

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

import ee
import geemap.core as geemap

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

# Create an Array of Tasseled Cap coefficients.
coefficients = ee.Array([
    [0.3029, 0.2786, 0.4733, 0.5599, 0.508, 0.1872],
    [-0.2941, -0.243, -0.5424, 0.7276, 0.0713, -0.1608],
    [0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559],
    [-0.8239, 0.0849, 0.4396, -0.058, 0.2013, -0.2773],
    [-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],
    [0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252],
])

تأیید کنید که این یک آرایه 2 بعدی 6x6 با استفاده از length() است که طول هر محور را برمی گرداند:

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

// Print the dimensions.
print(coefficients.length()); //    [6,6]

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

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

import ee
import geemap.core as geemap

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

# Print the dimensions.
display(coefficients.length())  #    [6,6]

جدول زیر ترتیب ورودی های ماتریس را در امتداد محور 0 و محور 1 نشان می دهد:

1 محور ->
0 1 2 3 4 5
0 0.3029 0.2786 0.4733 0.5599 0.508 0.1872
1 -0.2941 -0.243 -0.5424 0.7276 0.0713 -0.1608
0-محور 2 0.1511 0.1973 0.3283 0.3407 -0.7117 -0.4559
3 -0.8239 0.0849 0.4396 -0.058 0.2013 -0.2773
4 -0.3294 0.0557 0.1056 0.1855 -0.4349 0.8085
5 0.1079 -0.9023 0.4119 0.0575 -0.0259 0.0252

شاخص های سمت چپ جدول موقعیت ها را در امتداد محور 0 نشان می دهد. عنصر n در هر لیست در محور 0 در موقعیت n در امتداد محور 1 قرار دارد. برای مثال، ورودی در مختصات [3،1] آرایه 0.0849 است. فرض کنید "سبز بودن" جزء TC مورد علاقه است. می توانید زیر ماتریس سبز بودن را با استفاده از slice() بدست آورید:

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

// Get the 1x6 greenness slice, display it.
var greenness = coefficients.slice({axis: 0, start: 1, end: 2, step: 1});
print(greenness);

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

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

import ee
import geemap.core as geemap

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

# Get the 1x6 greenness slice, display it.
greenness = coefficients.slice(axis=0, start=1, end=2, step=1)
display(greenness)

ماتریس سبزی دوبعدی باید چیزی شبیه به زیر باشد:

[[-0.2941,-0.243,-0.5424,0.7276,0.0713,-0.1608]]
    

توجه داشته باشید که پارامترهای start و end slice() با شاخص های محور صفر نمایش داده شده در جدول مطابقت دارند ( start شامل و end انحصاری است).

تصاویر آرایه ای

برای به دست آوردن یک تصویر سبز، ماتریس باندهای تصویر لندست 8 را در ماتریس سبز بودن ضرب کنید. برای انجام این کار، ابتدا تصویر چند باندی Landsat را به یک "Array Image" تبدیل کنید، جایی که هر پیکسل Array ای از مقادیر باند است. به عنوان مثال:

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

// Load a Landsat 8 image, select the bands of interest.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')
  .select(['B2', 'B3', 'B4', 'B5', 'B6', 'B7']);

// Make an Array Image, with a 1-D Array per pixel.
var arrayImage1D = image.toArray();

// Make an Array Image with a 2-D Array per pixel, 6x1.
var arrayImage2D = arrayImage1D.toArray(1);

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

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

import ee
import geemap.core as geemap

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

# Load a Landsat 8 image, select the bands of interest.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select(
    ['B2', 'B3', 'B4', 'B5', 'B6', 'B7']
)

# Make an Array Image, with a 1-D Array per pixel.
array_image_1d = image.toArray()

# Make an Array Image with a 2-D Array per pixel, 6x1.
array_image_2d = array_image_1d.toArray(1)

در این مثال، توجه داشته باشید که toArray() image به یک تصویر آرایه ای تبدیل می کند که در آن هر پیکسل یک بردار 1 بعدی است که ورودی های آن با 6 مقدار در موقعیت های مربوطه در باندهای image مطابقت دارد. تصویر آرایه ای از بردارهای 1 بعدی ایجاد شده به این روش مفهومی از شکل دو بعدی ندارد. برای انجام عملیات فقط دو بعدی مانند ضرب ماتریس، آن را با استفاده از toArray(1) به یک تصویر آرایه دو بعدی در هر پیکسل تبدیل کنید. در هر پیکسل از تصویر آرایه دو بعدی، یک ماتریس 6x1 از مقادیر باند وجود دارد. برای مشاهده این موضوع به مثال اسباب بازی زیر توجه کنید:

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

var array1D = ee.Array([1, 2, 3]);              // [1,2,3]
var array2D = ee.Array.cat([array1D], 1);     // [[1],[2],[3]]

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

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

import ee
import geemap.core as geemap

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

array_1d = ee.Array([1, 2, 3])  # [1,2,3]
array_2d = ee.Array.cat([array_1d], 1)  # [[1],[2],[3]]

توجه کنید که بردار array1D در امتداد محور 0 تغییر می کند. ماتریس array2D نیز این کار را انجام می دهد، اما یک بعد اضافی دارد. فراخوانی toArray(1) در تصویر آرایه مانند فراخوانی cat(bandVector, 1) روی هر پیکسل است. با استفاده از تصویر آرایه دوبعدی، در سمت چپ ضرب در تصویری که هر پیکسل حاوی یک ماتریس دو بعدی از ضرایب سبزی است:

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

// Do a matrix multiplication: 1x6 times 6x1.
// Cast the greenness Array to an Image prior to multiplication.
var greennessArrayImage = ee.Image(greenness).matrixMultiply(arrayImage2D);

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

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

import ee
import geemap.core as geemap

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

# Do a matrix multiplication: 1x6 times 6x1.
# Cast the greenness Array to an Image prior to multiplication.
greenness_array_image = ee.Image(greenness).matrixMultiply(array_image_2d)

نتیجه یک تصویر آرایه جدید است که در آن هر پیکسل ماتریس 1x1 است که از ضرب ماتریس سبزی 1x6 (چپ) و ماتریس باند 6x1 (راست) حاصل می شود. برای اهداف نمایش، با arrayGet() به یک تصویر معمولی و یک باند تبدیل کنید:

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

// Get the result from the 1x1 array in each pixel of the 2-D array image.
var greennessImage = greennessArrayImage.arrayGet([0, 0]);

// Display the input imagery with the greenness result.
Map.setCenter(-122.3, 37.562, 10);
Map.addLayer(image, {bands: ['B5', 'B4', 'B3'], min: 0, max: 0.5}, 'image');
Map.addLayer(greennessImage, {min: -0.1, max: 0.13}, 'greenness');

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

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

import ee
import geemap.core as geemap

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

# Get the result from the 1x1 array in each pixel of the 2-D array image.
greenness_image = greenness_array_image.arrayGet([0, 0])

# Display the input imagery with the greenness result.
m = geemap.Map()
m.set_center(-122.3, 37.562, 10)
m.add_layer(image, {'bands': ['B5', 'B4', 'B3'], 'min': 0, 'max': 0.5}, 'image')
m.add_layer(greenness_image, {'min': -0.1, 'max': 0.13}, 'greenness')
m

در اینجا یک مثال کامل آورده شده است که از کل آرایه ضرایب برای محاسبه همزمان چندین مؤلفه کلاهک منگوله ای و نمایش نتیجه استفاده می کند:

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

// Define an Array of Tasseled Cap coefficients.
var coefficients = ee.Array([
  [0.3029, 0.2786, 0.4733, 0.5599, 0.508, 0.1872],
  [-0.2941, -0.243, -0.5424, 0.7276, 0.0713, -0.1608],
  [0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559],
  [-0.8239, 0.0849, 0.4396, -0.058, 0.2013, -0.2773],
  [-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],
  [0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252],
]);

// Load a Landsat 8 image, select the bands of interest.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')
  .select(['B2', 'B3', 'B4', 'B5', 'B6', 'B7']);

// Make an Array Image, with a 1-D Array per pixel.
var arrayImage1D = image.toArray();

// Make an Array Image with a 2-D Array per pixel, 6x1.
var arrayImage2D = arrayImage1D.toArray(1);

// Do a matrix multiplication: 6x6 times 6x1.
var componentsImage = ee.Image(coefficients)
  .matrixMultiply(arrayImage2D)
  // Get rid of the extra dimensions.
  .arrayProject([0])
  .arrayFlatten(
    [['brightness', 'greenness', 'wetness', 'fourth', 'fifth', 'sixth']]);

// Display the first three bands of the result and the input imagery.
var vizParams = {
  bands: ['brightness', 'greenness', 'wetness'],
  min: -0.1, max: [0.5, 0.1, 0.1]
};
Map.setCenter(-122.3, 37.562, 10);
Map.addLayer(image, {bands: ['B5', 'B4', 'B3'], min: 0, max: 0.5}, 'image');
Map.addLayer(componentsImage, vizParams, 'components');

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

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

import ee
import geemap.core as geemap

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

# Define an Array of Tasseled Cap coefficients.
coefficients = ee.Array([
    [0.3029, 0.2786, 0.4733, 0.5599, 0.508, 0.1872],
    [-0.2941, -0.243, -0.5424, 0.7276, 0.0713, -0.1608],
    [0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559],
    [-0.8239, 0.0849, 0.4396, -0.058, 0.2013, -0.2773],
    [-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],
    [0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252],
])

# Load a Landsat 8 image, select the bands of interest.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select(
    ['B2', 'B3', 'B4', 'B5', 'B6', 'B7']
)

# Make an Array Image, with a 1-D Array per pixel.
array_image_1d = image.toArray()

# Make an Array Image with a 2-D Array per pixel, 6x1.
array_image_2d = array_image_1d.toArray(1)

# Do a matrix multiplication: 6x6 times 6x1.
components_image = (
    ee.Image(coefficients)
    .matrixMultiply(array_image_2d)
    # Get rid of the extra dimensions.
    .arrayProject([0])
    .arrayFlatten(
        [['brightness', 'greenness', 'wetness', 'fourth', 'fifth', 'sixth']]
    )
)

# Display the first three bands of the result and the input imagery.
viz_params = {
    'bands': ['brightness', 'greenness', 'wetness'],
    'min': -0.1,
    'max': [0.5, 0.1, 0.1],
}
m = geemap.Map()
m.set_center(-122.3, 37.562, 10)
m.add_layer(image, {'bands': ['B5', 'B4', 'B3'], 'min': 0, 'max': 0.5}, 'image')
m.add_layer(components_image, viz_params, 'components')
m

توجه داشته باشید که هنگام گرفتن نوارها از یک تصویر آرایه، ابتدا با project() از شر ابعاد اضافی خلاص شوید، سپس با arrayFlatten() آن را به یک تصویر معمولی تبدیل کنید. خروجی باید چیزی شبیه به این باشد:

تصویر کلاهک منگوله دار
شکل 1. اجزای کلاهک منگوله ای "روشنی" (قرمز)، "سبز بودن" (سبز) و "مرطوبی" (آبی).