“reduction” 通常指的是将一个数据集合(例如列表)通过某种操作缩减为一个单一的值。这个操作可以是求和、求平均值、找到最大/最小值等。下面将介绍Earth Engine中的List reductions、ImageCollection reductions、Image reductions、FeatureCollection reductions。
import ee
import geemap
ee.Initialize()
values = ee.List.sequence(1, 10) #创建一个序列列表
print(values.getInfo())
count = values.reduce(ee.Reducer.count()) #求一共有多少个值
print(count.getInfo()) # 10
min_value = values.reduce(ee.Reducer.min()) #求最小值
print(min_value.getInfo()) # 1
max_value = values.reduce(ee.Reducer.max()) #求最大值
print(max_value.getInfo()) # 10
min_max_value = values.reduce(ee.Reducer.minMax()) #求最小最大值
print(min_max_value.getInfo())
mean_value = values.reduce(ee.Reducer.mean()) #计算加权算数平均值
print(mean_value.getInfo()) # 5.5
median_value = values.reduce(ee.Reducer.median()) #从直方图中得到中位数
print(median_value.getInfo()) # 5.5
sum_value = values.reduce(ee.Reducer.sum()) #求和
print(sum_value.getInfo()) # 55
std_value = values.reduce(ee.Reducer.stdDev()) #求标准差
print(std_value.getInfo()) # 2.8723
Map = geemap.Map()
# 加载筛选后的数据
collection = (
ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA')
.filterDate('2021-01-01', '2021-12-31')
.filter(ee.Filter.eq('WRS_PATH', 44))
.filter(ee.Filter.eq('WRS_ROW', 34))
)
# 计算每个波段、每个像素的中值。
# 波段名称为 B1_median、B2_median 等。
median = collection.reduce(ee.Reducer.median())
# 输出结果为一个图像
vis_param = {'bands': ['B5_median', 'B4_median', 'B3_median'], 'gamma': 2}
Map.setCenter(-122.3355, 37.7924, 8)
Map.addLayer(median, vis_param)
Map
median = collection.median() #这与上面计算的结果没有区别,上面只是波段名字改了
print(median.bandNames().getInfo())
Map = geemap.Map()
image = ee.Image('LANDSAT/LC08/C01/T1/LC08_044034_20140318').select(['B4', 'B3', 'B2'])
maxValue = image.reduce(ee.Reducer.max()) #提取三个波段中的最大值
Map.centerObject(image, 8)
Map.addLayer(image, {}, 'Original image')
Map.addLayer(maxValue, {'max': 13000}, 'Maximum value image')
Map
Map = geemap.Map()
census = ee.FeatureCollection('TIGER/2010/Blocks')
benton = census.filter(
ee.Filter.And(ee.Filter.eq('statefp10', '41'), ee.Filter.eq('countyfp10', '003'))
)
Map.setCenter(-123.27, 44.57, 13)
Map.addLayer(benton)
Map
# 计算指定属性的总和。
properties = ['pop10', 'housing10']
sums = benton.filter(ee.Filter.notNull(properties)).reduceColumns(
**{'reducer': ee.Reducer.sum().repeat(2), 'selectors': properties}
)
sums
benton.aggregate_sum('pop10') #直接进行求和
大家如果有问题需要交流或者有项目需要合作,可以加Q Q :504156006详聊,加好友请留言“CSDN”,谢谢。