GEE(Google Earth Engine)——JavaScript 入门(3)
波段计算
使用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 returns the image centroid as a new Feature.
-
var getGeom = function(image) {
-
return ee.Feature(image.geometry().centroid(), {foo: 1});
-
};
-
-
// Load a Landsat 8 collection.
-
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 ImageCollection.
-
var featureCollection = ee.FeatureCollection(collection.map(getGeom));
-
-
// Print the collection.
-
print(featureCollection);
请注意foo为从图像质心创建的每个要素添加的属性 ( )。在最后一行中,演员表使生成的集合可识别为 FeatureCollection.
以上所有例子都可以在科学上网的情况下,完成直达,具体图像我就不展示了,希望对大家有帮助,更多资源可以点击资源查看。
文章来源: blog.csdn.net,作者:此星光明2021年博客之星云计算Top3,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31988139/article/details/118900159
- 点赞
- 收藏
- 关注作者
评论(0)