공지사항:
2025년 4월 15일 전에 Earth Engine 사용을 위해 등록된 모든 비상업용 프로젝트는 Earth Engine 액세스를 유지하기 위해
비상업용 자격 요건을 인증해야 합니다.
ee.FeatureCollection.iterate
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
사용자가 제공한 함수를 컬렉션의 각 요소에 적용합니다. 사용자가 제공한 함수에는 두 개의 인수가 제공됩니다. 현재 요소와 이전 iterate() 호출에서 반환된 값 또는 첫 번째 반복의 경우 첫 번째 인수입니다. 결과는 사용자가 제공한 함수에 대한 최종 호출에서 반환된 값입니다.
Collection.iterate() 호출의 결과를 반환합니다.
사용 | 반환 값 |
---|
FeatureCollection.iterate(algorithm, first) | ComputedObject |
인수 | 유형 | 세부정보 |
---|
다음과 같은 경우: collection | 컬렉션 | 컬렉션 인스턴스입니다. |
algorithm | 함수 | 각 요소에 적용할 함수입니다. 컬렉션의 요소와 이전 반복의 값을 두 개의 인수로 가져야 합니다. |
first | 객체, 선택사항 | 초기 상태입니다. |
예
코드 편집기 (JavaScript)
/**
* CAUTION: ee.FeatureCollection.iterate can be less efficient than alternative
* solutions implemented using ee.FeatureCollection.map or by converting feature
* properties to an ee.Array object and using ee.Array.slice and
* ee.Array.arrayAccum methods. Avoid ee.FeatureCollection.iterate if possible.
*/
// Monthly precipitation accumulation for 2020.
var climate = ee.ImageCollection('IDAHO_EPSCOR/TERRACLIMATE')
.filterDate('2020-01-01', '2021-01-01')
.select('pr');
// Region of interest: north central New Mexico, USA.
var roi = ee.Geometry.BBox(-107.19, 35.27, -104.56, 36.83);
// A FeatureCollection of mean monthly precipitation accumulation for the
// region of interest.
var meanPrecipTs = climate.map(function(image) {
var meanPrecip = image.reduceRegion(
{reducer: ee.Reducer.mean(), geometry: roi, scale: 5000});
return ee.Feature(roi, meanPrecip)
.set('system:time_start', image.get('system:time_start'));
});
// A cumulative sum function to apply to each feature in the
// precipitation FeatureCollection. The first input is the current feature and
// the second is a list of features that accumulates at each step of the
// iteration. The function fetches the last feature in the feature list, gets
// the cumulative precipitation sum value from it, and adds it to the current
// feature's precipitation value. The new cumulative precipitation sum is set
// as a property of the current feature, which is appended to the feature list
// that is passed onto the next step of the iteration.
var cumsum = function(currentFeature, featureList) {
featureList = ee.List(featureList);
var previousSum = ee.Feature(featureList.get(-1)).getNumber('pr_cumsum');
var currentVal = ee.Feature(currentFeature).getNumber('pr');
var currentSum = previousSum.add(currentVal);
return featureList.add(currentFeature.set('pr_cumsum', currentSum));
};
// Use "iterate" to cumulatively sum monthly precipitation over the year with
// the above defined "cumsum" function. Note that the feature list used in the
// "cumsum" function is initialized as the "first" variable. It includes a
// temporary feature with the "pr_cumsum" property set to 0; this feature is
// filtered out of the final FeatureCollection.
var first = ee.List([ee.Feature(null, {pr_cumsum: 0, first: true})]);
var precipCumSum =
ee.FeatureCollection(ee.List(meanPrecipTs.iterate(cumsum, first)))
.filter(ee.Filter.notNull(['pr']));
// Inspect the outputs.
print('Note cumulative precipitation ("pr_cumsum") property',
precipCumSum);
print(ui.Chart.feature.byFeature(
precipCumSum, 'system:time_start', ['pr', 'pr_cumsum']));
Python 설정
Python API 및 geemap
를 사용한 대화형 개발에 관한 자세한 내용은
Python 환경 페이지를 참고하세요.
import ee
import geemap.core as geemap
Colab (Python)
import altair as alt
# CAUTION: ee.FeatureCollection.iterate can be less efficient than alternative
# solutions implemented using ee.FeatureCollection.map or by converting feature
# properties to an ee.Array object and using ee.Array.slice and
# ee.Array.arrayAccum methods. Avoid ee.FeatureCollection.iterate if possible.
# Monthly precipitation accumulation for 2020.
climate = (
ee.ImageCollection('IDAHO_EPSCOR/TERRACLIMATE')
.filterDate('2020-01-01', '2021-01-01')
.select('pr')
)
# Region of interest: north central New Mexico, USA.
roi = ee.Geometry.BBox(-107.19, 35.27, -104.56, 36.83)
# A FeatureCollection of mean monthly precipitation accumulation for the
# region of interest.
def mean_precip_ts_fun(image):
mean_precip = image.reduceRegion(
reducer=ee.Reducer.mean(), geometry=roi, scale=5000
)
return ee.Feature(roi, mean_precip).set(
'system:time_start', image.get('system:time_start')
)
mean_precip_ts = climate.map(mean_precip_ts_fun)
# A cumulative sum function to apply to each feature in the
# precipitation FeatureCollection. The first input is the current feature and
# the second is a list of features that accumulates at each step of the
# iteration. The function fetches the last feature in the feature list, gets
# the cumulative precipitation sum value from it, and adds it to the current
# feature's precipitation value. The new cumulative precipitation sum is set
# as a property of the current feature, which is appended to the feature list
# that is passed onto the next step of the iteration.
def cumsum(current_feature, feature_list):
feature_list = ee.List(feature_list)
previous_sum = ee.Feature(feature_list.get(-1)).getNumber('pr_cumsum')
current_val = ee.Feature(current_feature).getNumber('pr')
current_sum = previous_sum.add(current_val)
return feature_list.add(current_feature.set('pr_cumsum', current_sum))
# Use "iterate" to cumulatively sum monthly precipitation over the year with
# the above defined "cumsum" function. Note that the feature list used in the
# "cumsum" function is initialized as the "first" variable. It includes a
# temporary feature with the "pr_cumsum" property set to 0 this feature is
# filtered out of the final FeatureCollection.
first = ee.List([ee.Feature(None, {'pr_cumsum': 0, 'first': True})])
precip_cum_sum = ee.FeatureCollection(
ee.List(mean_precip_ts.iterate(cumsum, first))
).filter(ee.Filter.notNull(['pr']))
precip_cum_sum = precip_cum_sum.map(
lambda feature: feature.set(
'date',
ee.Date(feature.getNumber('system:time_start')).format('YYYY-MM-dd'),
)
)
# Inspect the outputs.
display('Note cumulative precipitation ("pr_cumsum") property', precip_cum_sum)
df = geemap.ee_to_df(precip_cum_sum, ['date', 'pr', 'pr_cumsum'])
display(df)
chart = (
alt.Chart(df)
.mark_line()
.encode(x='date:T', y='pr:Q', color=alt.value('blue'))
)
chart += (
alt.Chart(df)
.mark_line()
.encode(x='date:T', y='pr_cumsum:Q', color=alt.value('red'))
)
chart
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-07-26(UTC)
[null,null,["최종 업데이트: 2025-07-26(UTC)"],[[["\u003cp\u003e\u003ccode\u003eFeatureCollection.iterate()\u003c/code\u003e applies a custom function iteratively to each element of a FeatureCollection, using the output of the previous iteration as input for the next.\u003c/p\u003e\n"],["\u003cp\u003eIt allows for accumulating or aggregating data across features, enabling operations like cumulative sums or sequential processing.\u003c/p\u003e\n"],["\u003cp\u003eThe user-provided function receives the current element and the previous iteration's result, returning a value used in the next step.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eFeatureCollection.iterate()\u003c/code\u003e can be less efficient than \u003ccode\u003emap()\u003c/code\u003e or array-based methods for certain tasks, so consider alternatives if performance is critical.\u003c/p\u003e\n"],["\u003cp\u003eThe final output is the result of the last function call, typically a modified FeatureCollection or a computed value.\u003c/p\u003e\n"]]],[],null,["# ee.FeatureCollection.iterate\n\n\u003cbr /\u003e\n\nApplies a user-supplied function to each element of a collection. The user-supplied function is given two arguments: the current element, and the value returned by the previous call to iterate() or the first argument, for the first iteration. The result is the value returned by the final call to the user-supplied function.\n\n\u003cbr /\u003e\n\nReturns the result of the Collection.iterate() call.\n\n| Usage | Returns |\n|---------------------------------------------------|----------------|\n| FeatureCollection.iterate`(algorithm, `*first*`)` | ComputedObject |\n\n| Argument | Type | Details |\n|--------------------|------------------|-----------------------------------------------------------------------------------------------------------------------------------------|\n| this: `collection` | Collection | The Collection instance. |\n| `algorithm` | Function | The function to apply to each element. Must take two arguments: an element of the collection and the value from the previous iteration. |\n| `first` | Object, optional | The initial state. |\n\nExamples\n--------\n\n### Code Editor (JavaScript)\n\n```javascript\n/**\n * CAUTION: ee.FeatureCollection.iterate can be less efficient than alternative\n * solutions implemented using ee.FeatureCollection.map or by converting feature\n * properties to an ee.Array object and using ee.Array.slice and\n * ee.Array.arrayAccum methods. Avoid ee.FeatureCollection.iterate if possible.\n */\n\n// Monthly precipitation accumulation for 2020.\nvar climate = ee.ImageCollection('IDAHO_EPSCOR/TERRACLIMATE')\n .filterDate('2020-01-01', '2021-01-01')\n .select('pr');\n\n// Region of interest: north central New Mexico, USA.\nvar roi = ee.Geometry.BBox(-107.19, 35.27, -104.56, 36.83);\n\n// A FeatureCollection of mean monthly precipitation accumulation for the\n// region of interest.\nvar meanPrecipTs = climate.map(function(image) {\n var meanPrecip = image.reduceRegion(\n {reducer: ee.Reducer.mean(), geometry: roi, scale: 5000});\n return ee.Feature(roi, meanPrecip)\n .set('system:time_start', image.get('system:time_start'));\n});\n\n// A cumulative sum function to apply to each feature in the\n// precipitation FeatureCollection. The first input is the current feature and\n// the second is a list of features that accumulates at each step of the\n// iteration. The function fetches the last feature in the feature list, gets\n// the cumulative precipitation sum value from it, and adds it to the current\n// feature's precipitation value. The new cumulative precipitation sum is set\n// as a property of the current feature, which is appended to the feature list\n// that is passed onto the next step of the iteration.\nvar cumsum = function(currentFeature, featureList) {\n featureList = ee.List(featureList);\n var previousSum = ee.Feature(featureList.get(-1)).getNumber('pr_cumsum');\n var currentVal = ee.Feature(currentFeature).getNumber('pr');\n var currentSum = previousSum.add(currentVal);\n return featureList.add(currentFeature.set('pr_cumsum', currentSum));\n};\n\n// Use \"iterate\" to cumulatively sum monthly precipitation over the year with\n// the above defined \"cumsum\" function. Note that the feature list used in the\n// \"cumsum\" function is initialized as the \"first\" variable. It includes a\n// temporary feature with the \"pr_cumsum\" property set to 0; this feature is\n// filtered out of the final FeatureCollection.\nvar first = ee.List([ee.Feature(null, {pr_cumsum: 0, first: true})]);\nvar precipCumSum =\n ee.FeatureCollection(ee.List(meanPrecipTs.iterate(cumsum, first)))\n .filter(ee.Filter.notNull(['pr']));\n\n// Inspect the outputs.\nprint('Note cumulative precipitation (\"pr_cumsum\") property',\n precipCumSum);\nprint(ui.Chart.feature.byFeature(\n precipCumSum, 'system:time_start', ['pr', 'pr_cumsum']));\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\nimport altair as alt\n\n# CAUTION: ee.FeatureCollection.iterate can be less efficient than alternative\n# solutions implemented using ee.FeatureCollection.map or by converting feature\n# properties to an ee.Array object and using ee.Array.slice and\n# ee.Array.arrayAccum methods. Avoid ee.FeatureCollection.iterate if possible.\n\n# Monthly precipitation accumulation for 2020.\nclimate = (\n ee.ImageCollection('IDAHO_EPSCOR/TERRACLIMATE')\n .filterDate('2020-01-01', '2021-01-01')\n .select('pr')\n)\n\n# Region of interest: north central New Mexico, USA.\nroi = ee.Geometry.BBox(-107.19, 35.27, -104.56, 36.83)\n\n\n# A FeatureCollection of mean monthly precipitation accumulation for the\n# region of interest.\ndef mean_precip_ts_fun(image):\n mean_precip = image.reduceRegion(\n reducer=ee.Reducer.mean(), geometry=roi, scale=5000\n )\n return ee.Feature(roi, mean_precip).set(\n 'system:time_start', image.get('system:time_start')\n )\n\n\nmean_precip_ts = climate.map(mean_precip_ts_fun)\n\n\n# A cumulative sum function to apply to each feature in the\n# precipitation FeatureCollection. The first input is the current feature and\n# the second is a list of features that accumulates at each step of the\n# iteration. The function fetches the last feature in the feature list, gets\n# the cumulative precipitation sum value from it, and adds it to the current\n# feature's precipitation value. The new cumulative precipitation sum is set\n# as a property of the current feature, which is appended to the feature list\n# that is passed onto the next step of the iteration.\ndef cumsum(current_feature, feature_list):\n feature_list = ee.List(feature_list)\n previous_sum = ee.Feature(feature_list.get(-1)).getNumber('pr_cumsum')\n current_val = ee.Feature(current_feature).getNumber('pr')\n current_sum = previous_sum.add(current_val)\n return feature_list.add(current_feature.set('pr_cumsum', current_sum))\n\n\n# Use \"iterate\" to cumulatively sum monthly precipitation over the year with\n# the above defined \"cumsum\" function. Note that the feature list used in the\n# \"cumsum\" function is initialized as the \"first\" variable. It includes a\n# temporary feature with the \"pr_cumsum\" property set to 0 this feature is\n# filtered out of the final FeatureCollection.\nfirst = ee.List([ee.Feature(None, {'pr_cumsum': 0, 'first': True})])\nprecip_cum_sum = ee.FeatureCollection(\n ee.List(mean_precip_ts.iterate(cumsum, first))\n).filter(ee.Filter.notNull(['pr']))\n\nprecip_cum_sum = precip_cum_sum.map(\n lambda feature: feature.set(\n 'date',\n ee.Date(feature.getNumber('system:time_start')).format('YYYY-MM-dd'),\n )\n)\n\n# Inspect the outputs.\ndisplay('Note cumulative precipitation (\"pr_cumsum\") property', precip_cum_sum)\n\ndf = geemap.ee_to_df(precip_cum_sum, ['date', 'pr', 'pr_cumsum'])\ndisplay(df)\n\nchart = (\n alt.Chart(df)\n .mark_line()\n .encode(x='date:T', y='pr:Q', color=alt.value('blue'))\n)\nchart += (\n alt.Chart(df)\n .mark_line()\n .encode(x='date:T', y='pr_cumsum:Q', color=alt.value('red'))\n)\nchart\n```"]]