Google Earth Engine(GEE)——如何正确使用if和for条件判断?
映射的函数在它可以执行的操作中受到限制。具体来说,它不能修改函数外的变量;它不能打印任何东西;它不能使用 JavaScript 的“if”或“for”语句。但是,您可以使用ee.Algorithms.If()
在映射函数中执行条件操作。例如:
上一次博客中写道同样的影像结果应该是118幅,但是此次经过太阳高度的条件判断,最终就只有84幅了。而且可以从波段的数量上就能看出在返回为0的影像中仅有1各波段,就是一个list附加一个properties里面有一个指针也就是这副影像的系统位置名称
ee.Algorithms.If(condition, trueCase, falseCase)
根据条件选择其输入之一,类似于 if-then-else 构造。
Selects one of its inputs based on a condition, similar to an if-then-else construct.
Arguments:
condition (Object, default: null):
确定返回哪个结果的条件。如果这不是布尔值,则按照以下规则将其解释为布尔值: - 等于 0 或 NaN 的数字为假。 - 空字符串、列表和字典是假的。 - 空是假的。 - 其他都是真的:这里就是说非空非0都是真的
The condition that determines which result is returned. If this is not a boolean, it is interpreted as a boolean by the following rules:
- Numbers that are equal to 0 or a NaN are false.
- Empty strings, lists and dictionaries are false.
- Null is false.
- Everything else is true.
trueCase (Object, default: null):
The result to return if the condition is true.
falseCase (Object, default: null):
The result to return if the condition is false.
Returns: Object
代码很简单:
-
// 依旧是进行影像按照行列号进行筛选
-
var collection = ee.ImageCollection('LANDSAT/LC8_L1T_TOA')
-
.filter(ee.Filter.eq('WRS_PATH', 44))
-
.filter(ee.Filter.eq('WRS_ROW', 34));
-
-
// 如果太阳高度 > 40 度此函数使用条件语句返回正常图像,否则它返回一个零图像。
-
var conditional = function(image) {
-
return ee.Algorithms.If(ee.Number(image.get('SUN_ELEVATION')).gt(40),
-
image,
-
ee.Image(0));
-
};
-
-
// 将函数映射到集合上,转换为 List 并打印结果。
-
print('Expand this to see the result: ', collection.map(conditional));
文章来源: blog.csdn.net,作者:此星光明2021年博客之星云计算Top3,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31988139/article/details/119671237
- 点赞
- 收藏
- 关注作者
评论(0)