公告:凡是在
2025 年 4 月 15 日前註冊使用 Earth Engine 的非商業專案,都必須
驗證非商業用途資格,才能繼續存取 Earth Engine。
對 ImageCollection 進行對應
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
如要將函式套用至 ImageCollection
中的每個 Image
,請使用 imageCollection.map()
。map()
的唯一引數是函式,該函式會使用一個參數:ee.Image
。例如,以下程式碼會在集合中的每張圖片中加入時間戳記區塊。
程式碼編輯器 (JavaScript)
// Load a Landsat 8 collection for a single path-row, 2021 images only.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filterDate('2021', '2022')
.filter(ee.Filter.eq('WRS_PATH', 44))
.filter(ee.Filter.eq('WRS_ROW', 34));
// This function adds a band representing the image timestamp.
var addTime = function(image) {
return image.addBands(image.getNumber('system:time_start'));
};
// Map the function over the collection and display the result.
print(collection.map(addTime));
Python 設定
請參閱「
Python 環境」頁面,瞭解 Python API 和如何使用 geemap
進行互動式開發。
import ee
import geemap.core as geemap
Colab (Python)
# Load a Landsat 8 collection for a single path-row, 2021 images only.
collection = (
ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filterDate('2021', '2022')
.filter(ee.Filter.eq('WRS_PATH', 44))
.filter(ee.Filter.eq('WRS_ROW', 34))
)
# This function adds a band representing the image timestamp.
def add_time(image):
return image.addBands(image.getNumber('system:time_start'))
# Map the function over the collection and display the result.
display(collection.map(add_time))
請注意,在預先定義的函式中,getNumber()
方法會用於根據屬性的數值建立新的 Image
。如「減少」和「合成」一節所述,設定時間帶可用於變更的線性模擬,以及製作合成圖。
對應的函式可執行的作業受到限制。具體來說,它無法修改函式以外的變數;無法輸出任何內容;無法使用 JavaScript 和 Python 的「if」或「for」陳述式。不過,您可以使用 ee.Algorithms.If()
在對應函式中執行條件運算。例如:
程式碼編輯器 (JavaScript)
// Load a Landsat 8 collection for a single path-row, 2021 images only.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filterDate('2021', '2022')
.filter(ee.Filter.eq('WRS_PATH', 44))
.filter(ee.Filter.eq('WRS_ROW', 34));
// This function uses a conditional statement to return the image if
// the solar elevation > 40 degrees. Otherwise it returns a "zero image".
var conditional = function(image) {
return ee.Algorithms.If(ee.Number(image.get('SUN_ELEVATION')).gt(40),
image,
ee.Image(0));
};
// Map the function over the collection and print the result. Expand the
// collection and note that 7 of the 22 images are now "zero images'.
print('Expand this to see the result', collection.map(conditional));
Python 設定
請參閱「
Python 環境」頁面,瞭解 Python API 和如何使用 geemap
進行互動式開發。
import ee
import geemap.core as geemap
Colab (Python)
# Load a Landsat 8 collection for a single path-row, 2021 images only.
collection = (
ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filterDate('2021', '2022')
.filter(ee.Filter.eq('WRS_PATH', 44))
.filter(ee.Filter.eq('WRS_ROW', 34))
)
# This function uses a conditional statement to return the image if
# the solar elevation > 40 degrees. Otherwise it returns a "zero image".
def conditional(image):
return ee.Algorithms.If(
ee.Number(image.get('SUN_ELEVATION')).gt(40), image, ee.Image(0)
)
# Map the function over the collection and print the result. Expand the
# collection and note that 7 of the 22 images are now "zero images'.
display('Expand this to see the result', collection.map(conditional))
檢查輸出 ImageCollection 中的圖片清單,並注意當 If()
演算法評估的條件為 true 時,輸出內容會包含常數圖片。雖然這裡示範的是伺服器端條件函式 (進一步瞭解 Earth Engine 中的用戶端與伺服器),但一般來說,請避免使用 If()
,改用篩選器。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-25 (世界標準時間)。
[null,null,["上次更新時間:2025-07-25 (世界標準時間)。"],[[["\u003cp\u003eThe \u003ccode\u003eimageCollection.map()\u003c/code\u003e function applies a specified function to each image within an ImageCollection in Earth Engine.\u003c/p\u003e\n"],["\u003cp\u003eThe function passed to \u003ccode\u003emap()\u003c/code\u003e should accept a single \u003ccode\u003eee.Image\u003c/code\u003e as input and return a modified image.\u003c/p\u003e\n"],["\u003cp\u003eWhile mapped functions have limitations like not modifying external variables or using conventional loops, conditional operations are achievable using \u003ccode\u003eee.Algorithms.If()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eDespite the availability of \u003ccode\u003eee.Algorithms.If()\u003c/code\u003e, prioritize using filters for conditional logic whenever possible for better efficiency and code clarity.\u003c/p\u003e\n"]]],["To apply a function to each `Image` in an `ImageCollection`, use `imageCollection.map()`, providing a function that takes an `ee.Image` as input. This function can add bands, such as a timestamp using `image.addBands(image.getNumber('system:time_start'))`. Conditional logic can be implemented within the mapped function using `ee.Algorithms.If()`, allowing for operations based on image properties like solar elevation, though filtering is preferred. This conditional process is server-side and operates on the entire collection.\n"],null,["# Mapping over an ImageCollection\n\nTo apply a function to every `Image` in an `ImageCollection` use\n`imageCollection.map()`. The only argument to `map()` is a\nfunction which takes one parameter: an `ee.Image`. For example, the following\ncode adds a timestamp band to every image in the collection.\n\n### Code Editor (JavaScript)\n\n```javascript\n// Load a Landsat 8 collection for a single path-row, 2021 images only.\nvar collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')\n .filterDate('2021', '2022')\n .filter(ee.Filter.eq('WRS_PATH', 44))\n .filter(ee.Filter.eq('WRS_ROW', 34));\n\n// This function adds a band representing the image timestamp.\nvar addTime = function(image) {\n return image.addBands(image.getNumber('system:time_start'));\n};\n\n// Map the function over the collection and display the result.\nprint(collection.map(addTime));\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# Load a Landsat 8 collection for a single path-row, 2021 images only.\ncollection = (\n ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')\n .filterDate('2021', '2022')\n .filter(ee.Filter.eq('WRS_PATH', 44))\n .filter(ee.Filter.eq('WRS_ROW', 34))\n)\n\n\n# This function adds a band representing the image timestamp.\ndef add_time(image):\n return image.addBands(image.getNumber('system:time_start'))\n\n\n# Map the function over the collection and display the result.\ndisplay(collection.map(add_time))\n```\n\nNote that in the predefined function, the `getNumber()` method is used\nto create a new `Image` from the numerical value of a property. As discussed in\nthe [Reducing](/earth-engine/guides/ic_reducing) and\n[Compositing](/earth-engine/guides/ic_composite_mosaic)\nsections, having the time band is useful for linear modeling of change and for making\ncomposites.\n\nThe mapped function is limited in the operations it can perform. Specifically, it can't\nmodify variables outside the function; it can't print anything; it can't use JavaScript and\nPython 'if' or 'for' statements. However, you can use `ee.Algorithms.If()` to\nperform conditional operations in a mapped function. For example:\n\n### Code Editor (JavaScript)\n\n```javascript\n// Load a Landsat 8 collection for a single path-row, 2021 images only.\nvar collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')\n .filterDate('2021', '2022')\n .filter(ee.Filter.eq('WRS_PATH', 44))\n .filter(ee.Filter.eq('WRS_ROW', 34));\n\n// This function uses a conditional statement to return the image if\n// the solar elevation \u003e 40 degrees. Otherwise it returns a \"zero image\".\nvar conditional = function(image) {\n return ee.Algorithms.If(ee.Number(image.get('SUN_ELEVATION')).gt(40),\n image,\n ee.Image(0));\n};\n\n// Map the function over the collection and print the result. Expand the\n// collection and note that 7 of the 22 images are now \"zero images'.\nprint('Expand this to see the result', collection.map(conditional));\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# Load a Landsat 8 collection for a single path-row, 2021 images only.\ncollection = (\n ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')\n .filterDate('2021', '2022')\n .filter(ee.Filter.eq('WRS_PATH', 44))\n .filter(ee.Filter.eq('WRS_ROW', 34))\n)\n\n\n# This function uses a conditional statement to return the image if\n# the solar elevation \u003e 40 degrees. Otherwise it returns a \"zero image\".\ndef conditional(image):\n return ee.Algorithms.If(\n ee.Number(image.get('SUN_ELEVATION')).gt(40), image, ee.Image(0)\n )\n\n\n# Map the function over the collection and print the result. Expand the\n# collection and note that 7 of the 22 images are now \"zero images'.\ndisplay('Expand this to see the result', collection.map(conditional))\n```\n\nInspect the list of images in the output ImageCollection and note that when the\ncondition evaluated by the `If()` algorithm is true, the output contains a\nconstant image. Although this demonstrates a server-side conditional function\n([learn more about client vs. server in Earth Engine](/earth-engine/guides/client_server)),\navoid `If()` in general and use filters instead."]]