Javascript Google Earth引擎-未定义数组的第一个元素

Javascript Google Earth引擎-未定义数组的第一个元素,javascript,arrays,undefined,gee,Javascript,Arrays,Undefined,Gee,我试图分别计算1000和2000个随机分布的水和陆地像素的平均值和方差值。然后我想将这两个平均值存储在一个名为“means”的列表中,将这两个方差值存储在一个名为“variances”的列表中。之后,我将使用这些值进行进一步计算。所有值都正确计算,但由于某些原因,两个列表中的第一个值都标记为“未定义”。不过,每个列表中的第二个值都是正确的。有人知道原因是什么吗 1000和2000个采样点随机分布在两个称为“水清”和“土壤亮”的多面体中。代码以GEE编写,并应用于Sentinel-2数据 谢谢大家

我试图分别计算1000和2000个随机分布的水和陆地像素的平均值和方差值。然后我想将这两个平均值存储在一个名为“means”的列表中,将这两个方差值存储在一个名为“variances”的列表中。之后,我将使用这些值进行进一步计算。所有值都正确计算,但由于某些原因,两个列表中的第一个值都标记为“未定义”。不过,每个列表中的第二个值都是正确的。有人知道原因是什么吗

1000和2000个采样点随机分布在两个称为“水清”和“土壤亮”的多面体中。代码以GEE编写,并应用于Sentinel-2数据

谢谢大家

Map.setCenter(31.27331, -22.41671, 15);
//Map.centerObject(knp, 12)

var date_start = '2020-04-01';
var date_end = '2020-04-30';


//Load Sentinel-2
var s2 = ee.ImageCollection("COPERNICUS/S2")
    .filter(ee.Filter.lessThanOrEquals('CLOUDY_PIXEL_PERCENTAGE', 20))
    .filterBounds(knp)
    .map(function(image){return image.clip(knp)});
    

var month = s2.filterDate(date_start, date_end).mosaic();//Datum an Monat anpassen//
Map.addLayer(month, {bands: ['B4', 'B3', 'B2'],min:0, max: 3000}, 'month');

//--------------------------Selecting_Random_Sample_Points_for_each_Class-----------------------------------------------
//ANPASSEN: Polygone
//Classes to select samples for
//Test classes for Seninel-2
var classes = [water_clear, soil_brown] //, water_turbid_20m, soil_bright, soil_brown, soil_dark, vegetation, shaddows, clouds]
var classes_names = ['Water_clear', 'soil_bright']// , 'Water_turbid_20m', 'Soil_bright', 'Soil_brown', 'Soil_dark', 'Vegetation', 'Shaddows', 'Clouds']

//Test classes for Seninel-1
//var classes = [S1_water_still, S1_water_flowing, soil_bright, S1_land, vegetation]
//var classes_names = ['S1_water_still', 'S1_water_flowing', 'Soil_bright', 'S1_land', 'Vegetation']

//repeat sample selection for each class
for (var i = 0; i < classes.length; i++) {

// Define an arbitrary region in which to compute random points.
var region = ee.Geometry(classes[i]);

//For the water classes create 1000 random points (as they are small in area).
//For the remaining classes create 2000 random points (as they are big in area).
if (classes[i] == water_clear || classes[i] == water_turbid || classes[i] == water_clear_20m || classes[i] == water_turbid_20m || classes[i] == S1_water_still || classes[i] == S1_water_flowing) {
var randomPoints = ee.FeatureCollection.randomPoints(region, 1000);
//Map.addLayer(randomPoints, {}, 'randomPoints'+[i]);
//print(randomPoints, 'randomPoints_1000')
} else {
var randomPoints = ee.FeatureCollection.randomPoints(region, 2000);
Map.addLayer(randomPoints, {}, 'randomPoints'+[i]);
//print(randomPoints, 'randomPoints_2000')

}

// Display the points.
Map.addLayer(randomPoints, {}, 'randomPoints for class: '+classes_names[i]);
print(randomPoints,'randomPoints for class: '+classes_names[i]);


//...................................Varianz..und..arithm. Mittel...............................
//empty lists to store mean and variance value for each class
var means = []
var variances = []


// //apply each element of list "classes" to the following code
//for (var i = 0; i < classes.length; i++) {
// //Calculate mean of all points
// //Creating feature collection
//var randomPoints = classes[i];
// print(randomPoints,'points')
// Map.addLayer(randomPoints,{},'points')

//mean
var mean = month
.select("B11")
.reduceRegion(ee.Reducer.mean(), randomPoints, 10)
.get("B11")
// Convert to Number for further use
var meanN = ee.Number(mean)
// Show data
print(meanN, 'arithm. Mittel '+[i]);

//variance
var variance = month
.select("B11")
.reduceRegion(ee.Reducer.variance(), randomPoints, 10)
.get("B11")
// Convert to Number for further use
var varianceN = ee.Number(variance)
// Show data
print(varianceN, 'Varianz '+[i]);

means[i] = meanN
variances[i] = varianceN
}
print(means,'means')
Map.setCenter(31.27331,-22.41671,15);
//地图中心对象(knp,12)
风险值日期_开始='2020-04-01';
风险值日期=2020-04-30;
//装载哨兵-2
var s2=ee.图像采集(“哥白尼/s2”)
.filter(参见filter.lessThanOrEquals('CLOUDY\u PIXEL\u PERCENTAGE',20))
.filterBounds(knp)
.map(函数(image){returnimage.clip(knp)});
var month=s2.filterDate(开始日期、结束日期).mosaic()//安帕森一家酒店//
addLayer(月,{bands:['B4','B3','B2'],最小值:0,最大值:3000},'month');
//--------------------------为每个类选择随机样本点-----------------------------------------------
//安帕森:多基因
//要为其选择样本的类
//Seninel-2的测试等级
变量等级=[水清澈,土壤棕色]//,水浑浊20m,土壤明亮,土壤棕色,土壤黑暗,植被,树荫,云]
变量类别名称=[“水清”、“土壤亮”]//、“水浊”20m、“土壤亮”、“土壤棕”、“土壤暗”、“植被”、“树荫”、“云”]
//Seninel-1的测试等级
//变量等级=[S1水静止,S1水流动,土壤明亮,S1土地,植被]
//变量类别名称=['S1_水_静止'、'S1_水_流动'、'S1_光明'、'S1_土地'、'植被']
//对每个类重复样本选择
对于(var i=0;i