geemap学习笔记036:分析地理空间数据--Earth Engine约简(reductions)

前言

“reduction” 通常指的是将一个数据集合(例如列表)通过某种操作缩减为一个单一的值。这个操作可以是求和、求平均值、找到最大/最小值等。下面将介绍Earth Engine中的List reductions、ImageCollection reductions、Image reductions、FeatureCollection reductions。

1 导入库并显示地图

import ee
import geemap
ee.Initialize()

2 List reductions

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

3 ImageCollection reductions

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

geemap学习笔记036:分析地理空间数据--Earth Engine约简(reductions)_第1张图片

median = collection.median() #这与上面计算的结果没有区别,上面只是波段名字改了
print(median.bandNames().getInfo())

4 Image reductions

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

5 FeatureCollection reductions

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”,谢谢。

你可能感兴趣的:(geemap,python,开发语言)