Annonce : Tous les projets non commerciaux enregistrés pour utiliser Earth Engine avant le
15 avril 2025 devront
vérifier leur éligibilité non commerciale pour conserver leur accès. Si vous ne validez pas votre statut avant le 26 septembre 2025, votre accès pourra être suspendu.
ee.FeatureCollection.iterate
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Applique une fonction fournie par l'utilisateur à chaque élément d'une collection. La fonction fournie par l'utilisateur reçoit deux arguments : l'élément actuel et la valeur renvoyée par l'appel précédent à iterate() ou le premier argument, pour la première itération. Le résultat correspond à la valeur renvoyée par le dernier appel à la fonction fournie par l'utilisateur.
Renvoie le résultat de l'appel Collection.iterate().
| Utilisation | Renvoie |
|---|
FeatureCollection.iterate(algorithm, first) | ComputedObject |
| Argument | Type | Détails |
|---|
ceci : collection | Collection | Instance de la collection. |
algorithm | Fonction | Fonction à appliquer à chaque élément. Doit prendre deux arguments : un élément de la collection et la valeur de l'itération précédente. |
first | Objet, facultatif | État initial. |
Exemples
Éditeur de code (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']));
Configuration de Python
Consultez la page
Environnement Python pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif.
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
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/26 (UTC).
[null,null,["Dernière mise à jour le 2025/07/26 (UTC)."],[],[]]