全国植被指数计算
# 全国植被指数计算
PIE-Engine Studio遥感计算云服务平台从landsat8_toa数据集中选取了覆盖中国地区2019年12月份的landsat8_toa数据进行批量的NDVI植被指数计算,并最大值影像融合算法——选取计算结果中植被指数最大值进行快速镶嵌显示,得到月度合成的影像数据。
# 1) 数据源分析:
覆盖中国地区2019年12月份的landsat8_toa数据,共786景影像。该数据包含12个波段,前11个波段覆盖了从可见光到热红外的各个波段信息,第12个QA波段包含了该影像的质量评估信息。
# 2) 核心代码示例
# 加载中国区域范围
fCol_1 = pie.FeatureCollection('user/101/public/shape/China');
fCol_2 = pie.FeatureCollection('user/pieadmin/public/shape/9_line_dash');
fCol = fCol_1.merge(fCol_2)
Map.addLayer(fCol, {'color': "#ff0000", 'fillColor': "#00000000"}, "china")
roi = fCol.getAt(0).geometry()
Map.addLayer(roi, {'color': "red", 'fillColor': "#00000000"}, "roi")
# 影像集合
l8Col = pie.ImageCollection("LC08/01/T1")
# 通过日期过滤影像集合,并且计算NDVI指数
def ndviF(image):
b4 = image.select("B4")
b5 = image.select("B5")
ndvi = (b5.subtract(b4).divide(b5.add(b4)))
return ndvi
l8Col = l8Col.filterDate("2019-12-01", "2019-12-31").select(["B4", "B5"]).map(ndviF)
# NDVI绘制样式
visParamNDVI = {
'min': -0.2,
'max': 0.8,
'palette': 'CA7A41, CE7E45, DF923D, F1B555, FCD163, 99B718, ' +
'74A901, 66A000, 529400,3E8601, 207401, 056201, 004C00,' +
'023B01, 012E01, 011D01, 011301'
}
# 加载影像集合的平均值
Map.addLayer(l8Col.mean().clip(roi), visParamNDVI, "NDVI")
Map.setCenter(34.1, 113.44, 6)
Map复制错误复制成功
流程步骤如下:
a) 加载中国边界图,并显示到地图上;
b) 加载LC8影像数据,并利用公式计算NDVI;
c) 设置渲染样式;
d) 加载到地图上显示。
# 3) 案例中主要涉及到的算子
• select():选择指定的波段影像;
• map():根据指定的函数对影像遍历计算并返回结果。
# 4) 结果分析展示
调用PIE-Engine遥感计算云平台在jupyter notebook中的实现效果如下图所示:
NDVI值介于-1到1之间,整值越大说明植被覆盖度越高,绿色越明显。从图中得出,绿色越明显的地区表明植被覆盖度越高,中国南方是绿度最高最广的区域,说明南方湿润的气候有利于植物的生长,而西北方由于气候干燥,植被覆盖度较低。
# 5) 完整代码
注意: 需要将代码中用户名和密码替换为用户在平台上注册时的用户名/密码
"""
Program infomation:Python3.7
"""
# 全国NDVI案例
import pie
import pie.pieleaflet as pieleaflet
# 使用用户在平台上注册时的用户名/密码
pie.initialize()
# 调用地图
Map = pie.Map()
# 加载中国区域范围
fCol = pie.FeatureCollection('user/101/public/shape/China')
Map.addLayer(fCol, {'color': "#ff0000", 'fillColor': "#00000000"}, "china")
roi = fCol.getAt(0).geometry()
Map.addLayer(roi, {'color': "red", 'fillColor': "#00000000"}, "roi")
# 影像集合
l8Col = pie.ImageCollection("LC08/01/T1")
# 通过日期过滤影像集合,并且计算NDVI指数
def ndviF(image):
b4 = image.select("B4")
b5 = image.select("B5")
ndvi = (b5.subtract(b4).divide(b5.add(b4)))
return ndvi
l8Col = l8Col.filterDate("2019-12-01", "2019-12-31").select(["B4", "B5"]).map(ndviF)
# NDVI绘制样式
visParamNDVI = {
'min': -0.2,
'max': 0.8,
'palette': 'CA7A41, CE7E45, DF923D, F1B555, FCD163, 99B718, ' +
'74A901, 66A000, 529400,3E8601, 207401, 056201, 004C00,' +
'023B01, 012E01, 011D01, 011301'
}
# 加载影像集合的最大值.mean().clip(roi)
Map.addLayer(l8Col.mean().clip(roi), visParamNDVI, "NDVI")
Map.setCenter(113.44,34.1,6)
Map
有问题,我来改改 (opens new window)
上次更新: 2022/05/25, 09:15:11