连接ee.Join
用于根据 ee.Filter
指定的条件组合来自不同集合(例如 ImageCollection 或 FeatureCollection)的元素。
过滤器由每个集合中相互关联的属性的参数构成。具体来说,leftField 指定主集合中与辅助集合中的 rightField 相关的属性。
过滤器的类型(例如,equals、greaterThanOrEquals、lessThan 等)表示字段之间的关系。
连接的类型表示集合中元素之间的一对多或一对一关系以及要保留多少匹配项。
连接的输出由 join.apply()
生成,并且会根据连接的类型而有所不同。
具体方法有:
- 只保留左侧数据集
- 筛选符合条件的
- 反选符合条件的
- 两侧数据集均保留(数据集合并)
- 对符合要求的数据集以属性形式添加左侧数据集内
- 用于确定符合要求的右侧数据集,结果标记在左侧新增属性字段内
- 确定最优数据集,返回在属性字段内,只保留最优图像
- 只保留右侧第一个符合要求数据影像
- 空间连接(空间筛选器)
- 基于距离对数据集进行连接
- 基于几何位置进行连接
1. 只保留左侧数据集
筛选符合条件的
- 代码详解
- 案例
反选符合条件的
- 代码详解
- 案例
2. 两侧数据集均保留(数据集合并)
并且会增加字段,表示左侧第几个位置和右侧第几个位置的数据符合筛选条件
- 代码详解
- 案例1
图中,有5个Feature
满足要求,编号为01234
(编号是从0开始的,0就是第1个,4就是第5个)。
在编号为0的元素(element)中,也就是Feature 1_0
,左侧primary
的数据为primaryFeatures
里面的第2个,编号为1,也就是Feature 1 ---> ee.Feature(null, {foo: 1, label: 'b'})
,因为条件是foo eq bar
, 所以满足这个条件的右侧数据是ee.Feature(null, {bar: 1, label: 'e'})
,也就是第1个,编号为0,所以是Feature 0
。
因此,第一个满足要求的数据就是Feature 1_0
(左边第2个=右边第1个)
- 案例2
将相同时间段内的2个数据集连接成一个数据集合
primary
数据有1个band(element)
,secondary
数据有19个bands(elements)
(如上图所示)整合后的数据集有20个bands(elements)
(如下图所示)
3. 对符合要求的数据集以属性形式添加左侧数据集内
用于确定符合要求的右侧数据集,结果标记在左侧新增属性字段内
- 代码详解
- 案例
新增的Sentinel_Match
,把右侧的数据(sentinel)添加到左侧数据(landsat)中去(如上图所示)
确定最优数据集,返回在属性字段内,只保留最优图像
筛选符合条件的所有数据,通过差值选择最优的数据
- 代码详解
- 案例
只保留右侧第一个符合要求数据影像
- 案例
- 空间连接(空间筛选器)
基于距离对数据集进行连接
- 代码详解
- 案例
左侧数据集和右侧数据集都会被保存起来,左侧被保存为feature
,右侧被保存为geometry point
。
基于几何位置进行连接
- 代码详解
- 案例
参考资料:
GEE(Google Earth Engine)学习——常用筛选器Filter操作第10节 GEE的参数类型 (Filter,Join)