Google Earth Engine(GEE)综合练习一——Global Forest Change损失额loss的mapLayer显示、reducer量化与chart制表

Hansen Global Forest Change数据集介绍

Hansen Global Forest Change数据集是由美国马里兰大学环境科学和技术学院开发的全球森林变化监测数据集。该数据集提供了从2000年至今2021年的30米分辨率的全球森林面积、损失和增长的数据,并使用了高分辨率卫星图像和机器学习算法进行了精细的分类和变化检测。数据集包括森林/非森林分类、森林变化分类和森林面积、损失和增长数据。该数据集通过对全球林地进行森林/非森林分类,可识别并计算出大面积森林被砍伐或转化为农田或城市等非林地的情况。同时,通过森林变化分类,可分析出不同类型森林的变化情况,更好地了解森林面积、库存和生产力的影响因素。数据集将有助于全球森林资源的可持续管理和生态保护,以及相关政策和决策的制定和评估。
GEE数据集介绍
此实验用的是2015年,目前已经至2021年

图像显示

var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015');
//Map.addLayer(gfc2014);
//最大值100,min=0 by defalut
Map.addLayer(gfc2014, {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00'],
  max: 100
}, 'forest cover percent');

在这里插入图片描述

自我掩膜显示

//mask(gfc2014),mask by itself ,zero will be transparent
Map.addLayer(gfc2014.mask(gfc2014), {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00'],
  max: 100
}, 'forest cover masked')

using select显示

var treeCover = gfc2014.select(['treecover2000']);
var lossImage = gfc2014.select(['loss']);
var gainImage = gfc2014.select(['gain']);

// Add the tree cover layer in green.
Map.addLayer(treeCover.updateMask(treeCover),
    {palette: ['000000', '00FF00'], max: 100}, 'Forest Cover');

// Add the loss layer in red.
Map.addLayer(lossImage.updateMask(lossImage),
            {palette: ['FF0000']}, 'Loss');

// Add the gain layer in blue.
Map.addLayer(gainImage.updateMask(gainImage),
            {palette: ['0000FF']}, 'Gain');
// Forest loss (red), year 2000 cover (green) and gain (blue).
//treecover2000	point Percentage of tree cover in the pixel

在这里插入图片描述

and显示

// Use the and() method to create the lossAndGain image.
var gainAndLoss = gainImage.and(lossImage);

// Show the loss and gain image.
Map.addLayer(gainAndLoss.updateMask(gainAndLoss),
    {palette: 'FF00FF'}, 'Gain and Loss');

Quantifying Forest Change量化

//本例使用ee.Reducer.sum() reducer对刚果特征中的lossImage中的像素值求和。由于lossImage由值为1或0的像素组成(分别表示丢失或未丢失),因此这些值的总和相当于该区域中丢失的像素数。
// Load country features from Large Scale International Boundary (LSIB) dataset.
var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');
//.geometry(),这里不能用,因为下面的筛选用到属性信息,用了出错.filter is not a function
//Filtering is an operation you can do on ImageCollections, not individual Image,之前上传的feature不需要进行额外操作所以没有出错
// Subset the Congo Republic feature from countries刚果.
var congo = countries.filter(ee.Filter.eq('country_na', 'Rep of the Congo'));

// Get the forest loss image.
var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015');
var lossImage = gfc2014.select(['loss']);
lossImage = gfc2014.select(['loss']);
// Sum the values of forest loss pixels in the Congo Republic.

var stats = lossImage.reduceRegion({
  reducer: ee.Reducer.sum(),
  geometry: congo.geometry(),
  scale: 30,
  maxPixels: 1e9//没有则出错,像素太多
//reducereregion()的默认最大像素数是1000万。这个错误信息表明刚果共和国覆盖了大约3.83亿陆地卫星像素。
//reducereregion()接受许多参数,其中一个(maxPixels)允许您控制在计算中使用多少像素。指定此参数允许计算成功
});
print(stats);//object(1 property)
print('pixels representing loss: ', stats.get('loss'))//pixels representing loss: 4897923.317647058
 

在这里插入图片描述

Calculating Pixel Areas

//准备回答刚果共和国损失多少地区的问题, 其余部分是将像素转换为实际区域。这种转换很重要,因为我们不一定知道像素输入的大小到还原()。
//为了帮助计算区域具有ee.image.image.pixelearea()方法,生成一个图像,其中每个像素的值是平方米的像素区域。将损失图像乘以此区域图像,然后对结果进行概括,使我们有一个衡量面积的量度
// Get the forest loss image.剩余同上
var lossImage = gfc2014.select(['loss']);
var areaImage = lossImage.multiply(ee.Image.pixelArea());

// Sum the values of forest loss pixels in the Congo Republic.
var stats = areaImage.reduceRegion({
  reducer: ee.Reducer.sum(),
  geometry: congo,//修改计算区域可改为保护区损失的森林面积
  scale: 30,
  maxPixels: 1e9
});
print('pixels representing loss: ', stats.get('loss'), 'square meters');
//pixels representing loss:4372566344.693159 square meters
//

在这里插入图片描述

Charting Yearly Forest Loss

// Load country boundaries from LSIB.
var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');
// Get a feature collection with just the Congo feature.
var congo = countries.filter(ee.Filter.eq('country_co', 'CF'));

Calculating Yearly Forest Loss

//对于REDUCEREGION()的组输出,可以指定通过整数像素值定义组的分组频段。在下面的示例中,稍微修改了先前的代码,并将损失频段添加到原始图像中。损失频段中的每个像素都包含0到14的值 - 表示损失发生的年份。我们还将简化器更改为分组的还原器,指定分组频段的频段索引,因此像素区域将根据损失年频段中的值进行求和并分组。
//Get the loss image.
var gfc2017 = ee.Image('UMD/hansen/global_forest_change_2017_v1_5');
var lossImage = gfc2017.select(['loss']);
var lossAreaImage = lossImage.multiply(ee.Image.pixelArea());
var lossYear = gfc2017.select(['lossyear']);
//将lossYear通过addBands波段添加到lossByYear影像,同return image.addBands(ndvi)有年份属性操作 ,几个年份分为几个groups,等同于按年份将loss像元分类,同时group需要大于等于两个波段,如果修改横坐标即select'loseyear'为其他

var lossByYear = lossAreaImage.addBands(lossYear).reduceRegion({
  reducer: ee.Reducer.sum().group({
    groupField: 1,groupName:"loseYear"//groupName是原group组号的名字,按组求sum
    }),
  geometry: congo,
  scale: 30,
  maxPixels: 1e9
});
print(loseByYear)

在这里插入图片描述

//Groups reducer records by the value of a given input, and reduces each group with the given reducer.
//Reducer.group(groupField, groupName):按给定输入的值组简化记录,并使用给定的还原器减少每个组

//看到每年森林损失面积打印在一个称为组的嵌套列表中。我们可以对输出进行一些格式化,使结果成为一个字典,以年份为键,以损失面积为值。注意,我们使用format()方法将年份值从0-14转换为2000-2014。

var statsFormatted = ee.List(lossByYear.get('groups'))
  .map(function(el) {
    var d = ee.Dictionary(el);
    return [ee.Number(d.get('loseYear')).format("20%02d"), d.get('sum')];
  });
print(statsFormatted)//List(18elements)

在这里插入图片描述

var statsDictionary = ee.Dictionary(statsFormatted.flatten());
//Flattens any sublists into a single list. 将所有子列表平展为单个列表。
// ee.Dictionary(dict): dict接受1)另一个字典 2) A list of key/value pairs.这里
print(statsDictionary);//object(18 properties)

在这里插入图片描述

Making a chart 年损失额

//ui.Chart.array.values(array, axis, xLabels)。 该方法接受一个输入值数组(或列表)和一个x轴标签数组(或列表)。每个1-D向量沿着给定的轴绘制单独的序列。
var chart = ui.Chart.array.values({
  array: statsDictionary.values(),//内容是损失额
  axis: 0,
  xLabels: statsDictionary.keys()//即x轴是loseYear关键字
}).setChartType('ColumnChart')
  .setOptions({
    title: 'Yearly Forest Loss',
    hAxis: {title: 'Year', format: '####'},
    vAxis: {title: 'Area (square meters)'},
    legend: { position: "none" },
    lineWidth: 1,
    pointSize: 3
  });
print(chart);

在这里插入图片描述
GEE森林损失额综合练习

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值