前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Earth Engine——影像统计过程中出现的空值问题

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

作者头像
此星光明
发布2024-02-02 13:32:27
1620
发布2024-02-02 13:32:27
举报

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

代码:

代码语言:javascript
复制
//影像筛选这里是单景影像的筛选
var S2 = ee.ImageCollection('COPERNICUS/S2_SR')
  .filterMetadata("system:index", 'equals', '20210705T165901_20210705T165855_T20XNN')
 
// 定义一个云遮蔽函数。
var maskcloud1 = function(image) {
  var QA60 = image.select(['QA60']);
  return image.updateMask(QA60.lt(1))
};

// 定义一个植被掩蔽函数。这个大家需要去看这个波段的的影像信息
var masklandcover = function(image){
  var SCL = image.select(['SCL']);
  return image.updateMask(SCL.eq(4).or(SCL.eq(5)).or(SCL.eq(6)).or(SCL.eq(11)))
}

// 选择大于0的
var maskpstv = function(image){
  var RE = image.select(['AbsError']);
  return image.updateMask(RE.gte(0))
}

//选择小于0的
var maskngtv = function(image){
  var RE = image.select(['AbsError']);
  return image.updateMask(RE.lt(0))
}

var AbsoluteError_oldc_f = function(image) {
  return image.expression(
    '((2.5 * (NIR - RED) / (NIR + (6-7.5/2.08)*RED + 1))-(2.5 * (NIR - RED) / (NIR + 6*RED-7.5*BLUE + 1)))',
    {
      'NIR': image.select('B8').multiply(0.0001), 
      'RED': image.select('B4').multiply(0.0001), 
      'BLUE': image.select('B2').multiply(0.0001),
    }).rename('AbsError').copyProperties(image, image.propertyNames());
};

//利用影像进行上面的map工作
var ImgsMasked = S2.map(maskcloud1).map(masklandcover).map(AbsoluteError_oldc_f);

//然后再进行大于和小于的筛选
var ImgsMasked_pstv = ImgsMasked.map(maskpstv)
var ImgsMasked_ngtv = ImgsMasked.map(maskngtv)

//求影像的均值
var BecomeTs = function(image){
  var date = image.get("DATE_ACQUIRED")//.format("Y-M-D");
  var mean = image.reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry: image.geometry(),
    scale: 10,
    bestEffort: true
  });
//
// 并返回一个具有 "null "几何形状的特征,并带有属性(字典)。 
  return ee.Feature(null, {'mean': mean.get('AbsError'), 'date': date,'geometry':image.geometry().coordinates()})
}

print('ImgsMasked_ngtv',ImgsMasked_ngtv) 
// There is only one image with name 20210705T165901_20210705T165855_T20XNN
print('Result using map() function', ImgsMasked_ngtv.map(BecomeTs))  
// get the mean value -119345390125318.16
print('Result using first() function',BecomeTs(ImgsMasked_ngtv.first()))  
// get the mean value null
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档