波段计算
使用Image方法对图像进行数学运算。这可能包括波段重组(光谱指数)、图像差分或数学运算,例如乘以常数。例如,计算相隔 20 年的归一化差异植被指数 (NDVI) 图像之间的差异:
// This function gets NDVI from Landsat 5 imagery. var getNDVI = function(image) { return image.normalizedDifference(['B4', 'B3']); }; // Load two Landsat 5 images, 20 years apart. var image1 = ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_044034_19900604'); var image2 = ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_044034_20100611'); // Compute NDVI from the scenes. var ndvi1 = getNDVI(image1); var ndvi2 = getNDVI(image2); // Compute the difference in NDVI. var ndviDifference = ndvi2.subtract(ndvi1);
请注意function本示例中定义的用户的使用。更多关于下一节的功能。
映射(做什么而不是 for 循环)
使用map()以遍历集合中的项目。(For 循环不是在 Earth Engine 中执行此操作的正确方法,应避免使用)。该map() 函数可以应用于 an ImageCollection、 a FeatureCollection或 aList并接受 afunction 作为其参数。函数的参数是它所映射的集合的一个元素。这对于以相同的方式修改集合的每个元素很有用,例如添加。例如,以下代码向 中的每个图像添加 NDVI 波段ImageCollection:
// This function gets NDVI from Landsat 8 imagery. var addNDVI = function(image) { return image.addBands(image.normalizedDifference(['B5', 'B4'])); }; // Load the Landsat 8 raw data, filter by location and date. var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1') .filterBounds(ee.Geometry.Point(-122.262, 37.8719)) .filterDate('2014-06-01', '2014-10-01'); // Map the function over the collection. var ndviCollection = collection.map(addNDVI);
另一个常见任务是向 .csv 文件中的要素添加新属性(或“属性”或“字段”) FeatureCollection。在以下示例中,新属性是涉及两个现有属性的计算:
// This function creates a new property that is the sum of two existing properties. var addField = function(feature) { var sum = ee.Number(feature.get('property1')).add(feature.get('property2')); return feature.set({'sum': sum}); }; // Create a FeatureCollection from a list of Features. var features = ee.FeatureCollection([ ee.Feature(ee.Geometry.Point(-122.4536, 37.7403), {property1: 100, property2: 100}), ee.Feature(ee.Geometry.Point(-118.2294, 34.039), {property1: 200, property2: 300}), ]); // Map the function over the collection. var featureCollection = features.map(addField); // Print a selected property of one Feature. print(featureCollection.first().get('sum')); // Print the entire FeatureCollection. print(featureCollection);
请注意将ee.Number属性值识别为数字以使用该add()方法所需的强制转换)。可以通过 更改集合的类型map()。例如:
// This function creates a new property that is the sum of two existing properties. var addField = function(feature) { var sum = ee.Number(feature.get('property1')).add(feature.get('property2')); return feature.set({'sum': sum}); }; // Create a FeatureCollection from a list of Features. var features = ee.FeatureCollection([ ee.Feature(ee.Geometry.Point(-122.4536, 37.7403), {property1: 100, property2: 100}), ee.Feature(ee.Geometry.Point(-118.2294, 34.039), {property1: 200, property2: 300}), ]); // Map the function over the collection. var featureCollection = features.map(addField); // Print a selected property of one Feature. print(featureCollection.first().get('sum')); // Print the entire FeatureCollection. print(featureCollection);
请注意foo为从图像质心创建的每个要素添加的属性 ( )。在最后一行中,演员表使生成的集合可识别为 FeatureCollection.
以上所有例子都可以在科学上网的情况下,完成直达,具体图像我就不展示了,希望对大家有帮助,更多资源可以点击资源查看。