Google Earth Engine——影像统计过程中出现的空值问题

举报
此星光明 发表于 2022/07/23 22:08:56 2022/07/23
【摘要】 这里有一个问题,是单单只有一景影像, 但是这里我们需要看代码,代码中利用的函数就是原数据筛选,然后 就是这个函数用的等于,等于的值是单景影像的id filterMetadata(name, operator, value) 已删除。使用 filter() 与 ee.Filter.eq(), ee.Filter.gte() 等。 通过...

这里有一个问题,是单单只有一景影像, 但是这里我们需要看代码,代码中利用的函数就是原数据筛选,然后 就是这个函数用的等于,等于的值是单景影像的id

filterMetadata(name, operator, value)
已删除。使用 filter() 与 ee.Filter.eq(), ee.Filter.gte() 等。

通过元数据来过滤一个集合的快捷方式。这相当于this.filter(ee.Filter.metadata(..))。

返回过滤后的集合。

参数。
this:collection(集合)。
集合实例。

name(字符串)。
要过滤的属性名称。

operator (String):
比较运算符的名称。可能的值是。"equals", "less_than", "greater_than",

"not_equals", "not_less_than", "not_greater_than", "start_with",

"end_with", "not_starts_with", "not_ends_with", " contains",

"不包含"。

value(对象)。
  - 要比较的值。

返回。集合

所以这里就解释了为啥只有单景影像的第一个问题 

 这里第二个问题就是我们这里再统计单景影像的函数的时候这里是将统计值返回给一个空的矢量,所以这里并没有将其统计的值给得到,而这里选择的是first,也就是选择的第一个shp矢量这里本身就是一个空值

SCL Scene Classification Map (The "No Data" value of 0 is masked out) 1 11 20 meters 0

Class Table: SCL这里是具体的分类信息

Value Color Color Value Description
1 #ff0004 Saturated or defective
2 #868686 Dark Area Pixels
3 #774b0a Cloud Shadows
4 #10d22c Vegetation
5 #ffff52 Bare Soils
6 #0000ff Water
7 #818181 Clouds Low Probability / Unclassified
8 #c0c0c0 Clouds Medium Probability
9 #f1f1f1 Clouds High Probability
10 #bac5eb Cirrus
11 #52fff9 Snow / Ice

SLC波段将去掉0的数据 

代码:


  
  1. //影像筛选这里是单景影像的筛选
  2. var S2 = ee.ImageCollection('COPERNICUS/S2_SR')
  3. .filterMetadata("system:index", 'equals', '20210705T165901_20210705T165855_T20XNN')
  4. // 定义一个云遮蔽函数。
  5. var maskcloud1 = function(image) {
  6. var QA60 = image.select(['QA60']);
  7. return image.updateMask(QA60.lt(1))
  8. };
  9. // 定义一个植被掩蔽函数。这个大家需要去看这个波段的的影像信息
  10. var masklandcover = function(image){
  11. var SCL = image.select(['SCL']);
  12. return image.updateMask(SCL.eq(4).or(SCL.eq(5)).or(SCL.eq(6)).or(SCL.eq(11)))
  13. }
  14. // 选择大于0的
  15. var maskpstv = function(image){
  16. var RE = image.select(['AbsError']);
  17. return image.updateMask(RE.gte(0))
  18. }
  19. //选择小于0的
  20. var maskngtv = function(image){
  21. var RE = image.select(['AbsError']);
  22. return image.updateMask(RE.lt(0))
  23. }
  24. var AbsoluteError_oldc_f = function(image) {
  25. return image.expression(
  26. '((2.5 * (NIR - RED) / (NIR + (6-7.5/2.08)*RED + 1))-(2.5 * (NIR - RED) / (NIR + 6*RED-7.5*BLUE + 1)))',
  27. {
  28. 'NIR': image.select('B8').multiply(0.0001),
  29. 'RED': image.select('B4').multiply(0.0001),
  30. 'BLUE': image.select('B2').multiply(0.0001),
  31. }).rename('AbsError').copyProperties(image, image.propertyNames());
  32. };
  33. //利用影像进行上面的map工作
  34. var ImgsMasked = S2.map(maskcloud1).map(masklandcover).map(AbsoluteError_oldc_f);
  35. //然后再进行大于和小于的筛选
  36. var ImgsMasked_pstv = ImgsMasked.map(maskpstv)
  37. var ImgsMasked_ngtv = ImgsMasked.map(maskngtv)
  38. //求影像的均值
  39. var BecomeTs = function(image){
  40. var date = image.get("DATE_ACQUIRED")//.format("Y-M-D");
  41. var mean = image.reduceRegion({
  42. reducer: ee.Reducer.mean(),
  43. geometry: image.geometry(),
  44. scale: 10,
  45. bestEffort: true
  46. });
  47. //
  48. // 并返回一个具有 "null "几何形状的特征,并带有属性(字典)。
  49. return ee.Feature(null, {'mean': mean.get('AbsError'), 'date': date,'geometry':image.geometry().coordinates()})
  50. }
  51. print('ImgsMasked_ngtv',ImgsMasked_ngtv)
  52. // There is only one image with name 20210705T165901_20210705T165855_T20XNN
  53. print('Result using map() function', ImgsMasked_ngtv.map(BecomeTs))
  54. // get the mean value -119345390125318.16
  55. print('Result using first() function',BecomeTs(ImgsMasked_ngtv.first()))
  56. // get the mean value null

 

 

 

文章来源: blog.csdn.net,作者:此星光明,版权归原作者所有,如需转载,请联系作者。

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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