【问题标题】:How can I find all the lakes in a region (bounded by polgon) in earth engine?如何在地球引擎中找到一个区域(以多边形为界)中的所有湖泊?
【发布时间】:2019-06-19 06:23:45
【问题描述】:

问题陈述是给出了一个感兴趣的区域。

我需要使用水体的 NDWI 指数找到多边形有界区域中的所有湖泊,这些湖泊的高度超过 1500m。然后在 Google Earth Engine 中以表格形式显示从 1984 年到 2018 年以 2 年为间隔的湖泊地表水面积的变化。我使用过 Landsat 5 和 7 数据。

我创建了以下代码: Earth Engine Code

现在我需要以如下格式在表格结构中显示多边形标记区域中的结果:- 行 - (湖 1、湖 2、湖 3...湖 n) 列 -(1984 年的表面积,1986 年的表面积,...2018)

我应该怎么做呢?

【问题讨论】:

标签: google-earth google-earth-engine


【解决方案1】:

我就在 cmets 中发布的代码回答了这个问题,希望问题会随着 cmets 中发布的代码更新。

过滤:好的。

只是评论,我不会用名称 img 命名图像集合变量,这让我很困惑,但变量名称取决于您。

var mf = ee.Filter.calendarRange(10, 12, 'month');

var img1 = ee.ImageCollection(l5
            .filterDate('1984-01-01','1999-12-31')
            .filterBounds(roi)
            .filter(mf));

var img2 = ee.ImageCollection(l7
            .filterDate('2000-01-01','2018-12-31')
            .filterBounds(roi)
            .filter(mf));

添加 NDWI:这是您的代码:

var addNDWI = function(image){
  var ndwi = image.normalizedDifference(['B2', 'B4']).rename('NDWI');
  var ndwiMask = ndwi.gte(0.3);
  return image.addBands(ndwi);
};
var image1 = img1.map(addNDWI);
var image2 = img2.map(addNDWI);

您没有保存ndwiMask,因此您将无法在此功能之外使用它。同样,我不会将它们命名为 image,因为它们不是图像而是图像集合。

海拔遮罩:您必须选择elevation 波段:

var elevMask = elevation.select('elevation').gt(1500)

此蒙版图像将具有高程大于 1500 的图像,而没有高程的则为零。

应用掩码:在这部分你必须记住 Earth Engine 使用函数式编程,所以对象是不可变的,这意味着你不能使用方法更新对象的状态,你有捕获您正在调用的方法的输出。这里需要ndwi掩码,所以必须用NDWI波段计算。

var mask = function(image){
  var ndwiMask = image.select('NDWI').gt(0.3)
  var ndwi_masked = image.updateMask(ndwiMask);
  return ndwi_masked.updateMask(elevMask);
};

var maskedImg = image1.map(mask);  // ImageCollection!
var maskedImg2 = image2.map(mask);  // ImageCollection!

可视化:由于结果是ImageCollection,当您将其添加到地图时,EE 会生成马赛克,这就是您所看到的。请记住这一点,以便进一步处理。

var ndwiViz = {bands: ['NDWI'], min: 0.5, max: 1, palette: ['00FFFF', '0000FF']};
Map.addLayer(maskedImg, ndwiViz, 'Landsat 5 masked collection');

【讨论】:

  • 稍微更新了代码。还添加了问题中代码的更新链接。现在我需要在 Earth Engine 的表格结构中显示从 1984 年到 2018 年以 2 年为间隔的湖泊地表水面积的变化。能否请您检查一下地图上的显示?
  • 但这回答了原来的问题??您不应该更新提出新问题的问题。将原始问题保留在这里,如果需要,再发一篇文章
  • 这是新问题:stackoverflow.com/q/56862920/9937666。请检查一下。
猜你喜欢
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 2013-03-16
  • 1970-01-01
  • 2014-08-15
  • 2021-06-18
相关资源
最近更新 更多