Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何将多个地点(点几何)组合在一起作为一个特征集合,以便在所有地点上执行NDVI变化计算?_Javascript_Google Earth Engine_Landsat - Fatal编程技术网

Javascript 我如何将多个地点(点几何)组合在一起作为一个特征集合,以便在所有地点上执行NDVI变化计算?

Javascript 我如何将多个地点(点几何)组合在一起作为一个特征集合,以便在所有地点上执行NDVI变化计算?,javascript,google-earth-engine,landsat,Javascript,Google Earth Engine,Landsat,我不熟悉堆栈溢出和javascript,所以请提前道歉 总体目标:使用陆地卫星8号图像采集,计算8个地点的NDVI随时间的变化(年际和年际)。我不想对每个站点分别进行计算,而是希望将这些站点分组,然后一次对所有站点进行NDVI计算(但分别获得每个站点的结果) 初始目标:筛选单个站点。因此,在进行NDVI计算之前,我需要首先过滤并减少landsat 8图像采集(以去除云,获得正确的日期等),包括使用.filterBounds()按站点进行空间过滤,如下代码所示。当我运行代码时,地图窗口中只显示最后

我不熟悉堆栈溢出和javascript,所以请提前道歉

总体目标:使用陆地卫星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_路径
WRS_行
过滤图像采集,以获得距离站点最近的图像。然后将“roi”定义为多边形几何体,并在多边形内进行NDVI计算(我猜
clip()
image to polygon)


希望这些信息足够了。

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

在这里你需要做很多事情,但这里有一些门柱:

  • 使用
    map
    和自定义功能为图像集合中的每幅图像创建NDVI合成图
  • 在图像集合中为单个日期拼接合成图(这有点棘手,您可能需要定义并迭代特定的图像日期)
  • 通过使用例如
    iterate
    addBands
    (您必须以某种方式将日期存储在图像名称中,以便您知道每个波段在最终产品中所指的日期),按日期从合成创建图像
  • 在要素集合和创建的多波段图像上使用
    reduceRegions
    ,以获取每个图像波段的每个点的值