前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Earth Engine(GEE)——容易犯的错误7(JOIN 和Fiter)

Google Earth Engine(GEE)——容易犯的错误7(JOIN 和Fiter)

作者头像
此星光明
发布2024-02-02 08:13:08
1120
发布2024-02-02 08:13:08
举报

JOIN vs 地图过滤器

假设您想根据时间、位置或某些元数据属性加入集合。通常,这是通过连接最有效地完成的。以下示例在 Landsat 8 和 Sentinel-2 集合之间进行时空连接:

代码语言:javascript
复制
var s2 = ee.ImageCollection('COPERNICUS/S2')
    .filterBounds(ee.Geometry.Point([-2.0205, 48.647]));

var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR');

//两者进行合并保存链接
var joined = ee.Join.saveAll('landsat').apply({
  primary: s2,
  secondary: l8,
  condition: ee.Filter.and(
    ee.Filter.maxDifference({//这里影像合并的容许误差在一天内以毫秒计算
      difference: 1000 * 60 * 60 * 24, // One day in milliseconds
      leftField: 'system:time_start',//链接的方式通过这个属性波段
      rightField: 'system:time_start',
    }),
    ee.Filter.intersects({//两者相交的时候的名称
      leftField: '.geo',
      rightField: '.geo',
    })
  )
});
print(joined);

尽管您应该首先尝试连接(Export如果需要),但有时 a filter()内的 amap()也可能有效,尤其是对于非常大的集合。

代码语言:javascript
复制
var s2 = ee.ImageCollection('COPERNICUS/S2')
    .filterBounds(ee.Geometry.Point([-2.0205, 48.647]));

var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR');

var mappedFilter = s2.map(function(image) {//这个map比较男鞋,里面主要包含时间,然后时间的筛选和误差,最后返回值的范围和要筛选的返回值大小等等
  var date = image.date();
  var landsat = l8
      .filterBounds(image.geometry())
      .filterDate(date.advance(-1, 'day'), date.advance(1, 'day'));//时间的差异
  // 在属性中返回具有匹配场景的输入图像。
  return image.set({
    landsat: landsat,
    size: landsat.size()
  });
}).filter(ee.Filter.gt('size', 0));
print(mappedFilter);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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