本教程我们将分析植被覆盖度动态分布,再计算FVC的时候,我们首先要计算NDVI,然后通归一化处理,这个过程主要是计算最大值最小值的获取,植被覆盖度根据像元二分模型计算FVC=(NDVI-NDVImin)/(NDVImax-NDVImin)
植被覆盖率指某一地域植物垂直投影面积与该地域面积之比,用百分数表示。森林覆盖率,亦称森林覆被率指一个国家或地区森林面积占土地面积的百分比,是反映一个国家或地区森林面积占有情况或森林资源丰富程度及实现绿化程度的指标,又是确定森林经营和开发利用方针的重要依据之一。
这里用的两个reduce数据,
max()
返回一个输出其输入的最大值的Reducer。如果numInputs大于1,则还输出附加输入的相应值。
方法参数:
- numInputs(Int,默认1)
输入的数量。
返回值:Reducer
min()
返回一个输出其输入的最小值的Reducer。如果numInputs大于1,则还输出附加输入的相应值。
方法参数:
- numInputs(Int,默认1)
输入的数量。
返回值:Reducer
mean()
返回一个计算其输入的(加权)算术平均值的Reducer。
方法参数:
返回值:Reducer
filter(filter)
对影像集合进行指定过滤规则的过滤,然后返回过滤后的影像集合。
方法参数:
- imageCollection(ImageCollection)
ImageCollection实例。
- filter(Filter)
过滤规则对象。
返回值:ImageCollection
这里我们再使用filter的过程中可以筛选的不仅仅是日期,可以作为单个的年份的筛选
first()
获得影像集合的第一个Image对象。
方法参数:
- imageCollection(ImageCollection)
ImageCollection实例。
返回值:Image
代码:
var china = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY");
var FZ = china.filter(pie.Filter.eq("name", "福州市"));
Map.addLayer(FZ, { color: "ffff00ff", fillColor: "00000000" }, "福州市");
Map.centerObject(FZ, 8);
var geometry = FZ.getAt(0).geometry();
function processImage(year, geometry) {
var l8Col = pie.ImageCollection("LC08/01/T1")
.filterBounds(geometry)
.filterDate(year + "-03-01", year + "-07-31")
.select(["B5", "B4", "BQA"])
.map(function (image) {
var b4 = image.select("B4");
var b5 = image.select("B5");
var ndvi = (b5.subtract(b4)).divide(b5.add(b4));
var qa = image.select("BQA");
var cloudMask = qa.bitwiseAnd(1 << 4).eq(0);
ndvi = ndvi.updateMask(cloudMask)
.updateMask(ndvi.gt(0));
return ndvi;
});
var yearImg = l8Col.select("B5").max().clip(geometry);
return yearImg;
};
var visParams = {
min: -0.2,
max: 0.8,
palette: 'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' +
'3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};
var layerNames = [];
var NDVIs = [];
for (var i = 0; i < 8; i++) {
var year = 2013 + i;
var key = year.toString();
layerNames.push(key);
var NDVI = processImage(year, geometry);
NDVIs.push(NDVI);
Map.addLayer(NDVI, visParams, "NDVI_" + key, false);
};
function calFVCs(NDVI, geometry) {
var NDVI_max = NDVI.reduceRegion(pie.Reducer.max(), geometry, 1000).get("B5").getInfo();
var NDVI_min = NDVI.reduceRegion(pie.Reducer.min(), geometry, 1000).get("B5").getInfo();
var FVC = (NDVI.subtract(NDVI_min)).divide(pie.Number(NDVI_max).subtract(NDVI_min));
return FVC;
};
var FVCs = [];
for (var j = 0; j < 8; j++) {
var year = 2013 + j;
var key1 = year.toString();
var FVC = calFVCs(NDVIs[j], geometry);
FVC = FVC.set("year", year);
FVCs.push(FVC);
Map.addLayer(FVC, visParams, "FVC_" + key1);
};
print(FVCs);
var data = {
title: "植被覆盖",
colors: ['#FFFFFF', '#CE7E45', '#DF923D', '#F1B555', '#FCD163', '#99B718', '#74A901',
'#66A000', '#529400', '#3E8601', '#207401', '#056201', '#004C00', '#023B01',
'#012E01', '#011D01', '#011301'],
labels: ["低覆盖", "中低覆盖", "中覆盖", "中高覆盖", "高覆盖"],
step: 30,
};
var style = {
right: "200px",
bottom: "10px",
height: "70px",
width: "350px",
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
function calFVCmeans(FVCImg, geometry) {
var FVC_mean = FVCImg.reduceRegion(pie.Reducer.mean(), geometry, 1000);
return FVC_mean;
}
var FVCImgs = pie.ImageCollection().fromImages(FVCs);
print(FVCImgs);
var FVCmeans = [];
for (var m = 0; m < FVCs.length; m++) {
var year = 2013 + m;
var FVCImg = FVCImgs.filter(pie.Filter.eq("year", year)).first();
var FVC_mean = calFVCmeans(FVCImg, geometry);
print(year + "FVC均值为", FVC_mean);
FVCmeans.push(FVC_mean);
}
var xSeries = layerNames;
var line_options = {
title: '福州市2013年-2020年植被覆盖动态变化',
legend: ['FVC均值'],
xAxisName: "日期",
yAxisName: "植被覆盖度",
chartType: "line",
smooth: true
};
ChartImage(FVCmeans, xSeries, line_options);
for (var k = 0; k < FVCs.length; k++) {
var year = 2013 + k;
var image = FVCImgs.filter(pie.Filter.eq("year", year)).first();
Export.image({
image: image,
description: "FVC_" + year,
assetId: "FVC_" + year,
region: geometry,
scale: 1000
})
};
结果:
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
评论(0)