GEE(Google Earth Engine)——JavaScript 入门(3)

举报
此星光明 发表于 2022/04/16 01:05:26 2022/04/16
【摘要】 波段计算 使用Image方法对图像进行数学运算。这可能包括波段重组(光谱指数)、图像差分或数学运算,例如乘以常数。例如,计算相隔 20 年的归一化差异植被指数 (NDVI) 图像之间的差异: 代码编辑器 (JavaScript) // This function gets NDVI from Landsat 5 imagery.v...

波段计算

使用Image方法对图像进行数学运算。这可能包括波段重组(光谱指数)、图像差分或数学运算,例如乘以常数。例如,计算相隔 20 年的归一化差异植被指数 (NDVI) 图像之间的差异:

代码编辑器 (JavaScript)


  
  1. // This function gets NDVI from Landsat 5 imagery.
  2. var getNDVI = function(image) {
  3. return image.normalizedDifference(['B4', 'B3']);
  4. };
  5. // Load two Landsat 5 images, 20 years apart.
  6. var image1 = ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_044034_19900604');
  7. var image2 = ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_044034_20100611');
  8. // Compute NDVI from the scenes.
  9. var ndvi1 = getNDVI(image1);
  10. var ndvi2 = getNDVI(image2);
  11. // Compute the difference in NDVI.
  12. var ndviDifference = ndvi2.subtract(ndvi1);

请注意function本示例中定义的用户的使用。更多关于下一节的功能。

映射(做什么而不是 for 循环)

使用map()以遍历集合中的项目。(For 循环不是在 Earth Engine 中执行此操作的正确方法,应避免使用)。该map() 函数可以应用于 an ImageCollection、 a FeatureCollection或 aList并接受 afunction 作为其参数。函数的参数是它所映射的集合的一个元素。这对于以相同的方式修改集合的每个元素很有用,例如添加。例如,以下代码向 中的每个图像添加 NDVI 波段ImageCollection:

代码编辑器 (JavaScript)


  
  1. // This function gets NDVI from Landsat 8 imagery.
  2. var addNDVI = function(image) {
  3. return image.addBands(image.normalizedDifference(['B5', 'B4']));
  4. };
  5. // Load the Landsat 8 raw data, filter by location and date.
  6. var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1')
  7. .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  8. .filterDate('2014-06-01', '2014-10-01');
  9. // Map the function over the collection.
  10. var ndviCollection = collection.map(addNDVI);

另一个常见任务是向 .csv 文件中的要素添加新属性(或“属性”或“字段”) FeatureCollection。在以下示例中,新属性是涉及两个现有属性的计算:

代码编辑器 (JavaScript)


  
  1. // This function creates a new property that is the sum of two existing properties.
  2. var addField = function(feature) {
  3. var sum = ee.Number(feature.get('property1')).add(feature.get('property2'));
  4. return feature.set({'sum': sum});
  5. };
  6. // Create a FeatureCollection from a list of Features.
  7. var features = ee.FeatureCollection([
  8. ee.Feature(ee.Geometry.Point(-122.4536, 37.7403),
  9. {property1: 100, property2: 100}),
  10. ee.Feature(ee.Geometry.Point(-118.2294, 34.039),
  11. {property1: 200, property2: 300}),
  12. ]);
  13. // Map the function over the collection.
  14. var featureCollection = features.map(addField);
  15. // Print a selected property of one Feature.
  16. print(featureCollection.first().get('sum'));
  17. // Print the entire FeatureCollection.
  18. print(featureCollection);

请注意将ee.Number属性值识别为数字以使用该add()方法所需的强制转换)。可以通过 更改集合的类型map()。例如:

代码编辑器 (JavaScript)


  
  1. // This function returns the image centroid as a new Feature.
  2. var getGeom = function(image) {
  3. return ee.Feature(image.geometry().centroid(), {foo: 1});
  4. };
  5. // Load a Landsat 8 collection.
  6. var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1')
  7. .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  8. .filterDate('2014-06-01', '2014-10-01');
  9. // Map the function over the ImageCollection.
  10. var featureCollection = ee.FeatureCollection(collection.map(getGeom));
  11. // Print the collection.
  12. print(featureCollection);

请注意foo为从图像质心创建的每个要素添加的属性 ( )。在最后一行中,演员表使生成的集合可识别为 FeatureCollection.

以上所有例子都可以在科学上网的情况下,完成直达,具体图像我就不展示了,希望对大家有帮助,更多资源可以点击资源查看。

文章来源: blog.csdn.net,作者:此星光明2021年博客之星云计算Top3,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31988139/article/details/118900159

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。