【问题标题】:How do I group a number of sites (point geometries) together as a feature collection, to perform NDVI change calculations on all the sites?如何将多个站点(点几何)组合为一个要素集合,以对所有站点执行 NDVI 变化计算?
【发布时间】:2023-03-25 05:35:01
【问题描述】:

我是堆栈溢出和javascript的新手,所以提前道歉。

总体目标:使用 landsat 8 图像集计算 8 个地点的 NDVI 随时间变化(年际和年内)。我不想单独对每个站点进行计算,而是将站点分组在一起,然后一次对所有站点进行 NDVI 计算(但分别获取每个站点的结果)。

初始目标过滤个别网站。因此,在进行 NDVI 计算之前,我需要首先过滤和减少 landsat 8 图像集(以去除云、获取正确的日期等),包括使用.filterBounds() 按站点进行空间过滤,如下面的代码所示。当我运行代码时,地图窗口中只显示了最后一个站点(站点 5D)中的一个图像,并且控制台中没有错误消息。

//import the image collection
var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_RT');

//define a list of geometry points with co-ordinates as the 8 distinct sites
var siteList = [
    ee.Feature(/* color: #166f12 */ee.Geometry.Point (135.78877, -15.146215), {name: 'site1A'}), 
    ee.Feature(/* color: #1f921a */ee.Geometry.Point (135.836993, -15.171145), {name: 'site1B'}),
    ee.Feature(/* color: #1c73d5 */ee.Geometry.Point (136.434148, -15.647369), {name: 'site2A'}),
    ee.Feature(/* color: #144882 */ee.Geometry.Point (136.441971, -15.650919), {name: 'site2B'}), 
    ee.Feature(/* color: #de2626 */ee.Geometry.Point (140.853576, -17.422561), {name: 'site4A'}), 
    ee.Feature(/* color: #911919 */ee.Geometry.Point (140.89625, -17.340024), {name: 'site4B'}), 
    ee.Feature(/* color: #23cf7b */ee.Geometry.Point (141.665424, -15.027324), {name: 'site5A'}),
    ee.Feature(/* color: #228c58 */ee.Geometry.Point (141.660919, -14.996538), {name: 'site5D'})
    ];

// Create a FeatureCollection from the list and print it.
var sites = ee.FeatureCollection(siteList);
print(sites);

//Define the image
var image = ee.Image(l8
  .filterDate("2014-07-01", "2016-09-30")
  .filterBounds(sites)
  .sort("CLOUD_COVER")
  .first());
print("Landsat 8:", image);

var vis = {min: 0, max: 14000, bands:['B5', 'B4', 'B3']};
Map.addLayer(image, vis,'Sites test');

问题:正如脚本所示,并遵循 GEE 教程和其他 SO 答案,我已将站点定义为点几何图形,将它们放入列表中,然后将 ee.FeatureCollection() 定义为网站列表。但有些事情显然是不正确的。 如何更改脚本以使其正常工作?

我考虑了一种可能的解决方法,即通过WRS_PATHWRS_ROW 过滤图像集,以获取离站点最近的图像。然后将“roi”定义为多边形几何形状并在多边形内进行 NDVI 计算(我猜clip() 图像到多边形。

希望这是足够的信息。

【问题讨论】:

    标签: javascript google-earth-engine landsat


    【解决方案1】:

    您只会看到一张图片,因为您使用 first 函数只选择了一张图片。

    您需要在这里做很多事情,但这里有一些目标:

    1. 使用 map 和自定义函数为图像集中的每个图像创建 NDVI 合成。
    2. 在图像集合中拼接单个日期的合成(会有点棘手,您可能必须定义和迭代特定的图像日期)。
    3. 使用例如按日期从合成图像创建图像iterateaddBands。 (您必须以某种方式将日期存储在图像名称中,以便知道每个波段在最终产品中所指的日期)。
    4. 在特征集合和您创建的多波段图像上使用 reduceRegions 以获取每个图像波段的每个点的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 2012-07-23
      相关资源
      最近更新 更多