0

我是堆栈溢出和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 答案,我已将站点定义为点几何图形,将它们放入列表中,然后将 a 定义ee.FeatureCollection()为站点列表。但有些事情显然是不正确的。如何更改脚本以使其正常工作?

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

希望这是足够的信息。

4

1 回答 1

0

您只看到一张图像,因为您只使用该first功能选择了一张图像。

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

  1. map使用自定义函数为图像集中的每个图像创建 NDVI 合成。
  2. 拼接图像集合中单个日期的合成(会有点棘手,您可能必须定义和迭代特定的图像日期)。
  3. iterate使用 eg和.从按日期合成的图像创建图像addBands。(您必须以某种方式将日期存储在图像名称中,以便知道每个波段在最终产品中所指的日期)。
  4. 在您创建的要素集合和多波段图像上使用reduceRegions,以获取每个图像波段的每个点的值。
于 2019-12-01T17:10:30.637 回答