联接用于根据 指定的条件组合来自不同集合(例如ImageCollection
或FeatureCollection
)的元素 ee.Filter
。过滤器是用每个集合中彼此相关的属性的参数构造的。具体来说, leftField
指定与次要集合中的 相关的主要集合中的属性rightField
。过滤器的类型(例如 equals
、greaterThanOrEquals
、lessThan
等)指示字段之间的关系。连接的类型指示集合中元素之间的一对多或一对一关系以及要保留的匹配项数。联接的输出由join.apply()
联接的类型产生并且将根据联接的类型而变化。
简单连接根据过滤器中的匹配条件从primary
集合中返回与集合中任何元素匹配的元素secondary
。要执行简单连接,请使用ee.Join.simple()
. 这对于查找不同集合之间的公共元素或通过另一个集合过滤一个集合可能很有用。例如,考虑两个(可能)具有一些匹配元素的图像集合,其中“匹配”由过滤器中指定的条件定义。例如,让匹配意味着图像 ID 相等。由于两个集合中的匹配图像相同,因此使用简单的连接来发现这组匹配图像:
函数:
ee.Filter.equals(leftField, rightValue, rightField, leftValue)
创建一个一元或二元过滤器,如果两个操作数相等则该过滤器通过。
Creates a unary or binary filter that passes if the two operands are equals.
Arguments:
leftField(字符串,默认值:null): 左操作数的选择器。如果指定了 leftValue,则不应指定。 rightValue(对象,默认值:null): 右操作数的值。如果指定了 rightField,则不应指定。 rightField(字符串,默认值:null): 右操作数的选择器。如果指定了 rightValue,则不应指定。 leftValue(对象,默认值:null): 左操作数的值。如果指定了 leftField,则不应指定。
leftField (String, default: null):
A selector for the left operand. Should not be specified if leftValue is specified.
rightValue (Object, default: null):
The value of the right operand. Should not be specified if rightField is specified.
rightField (String, default: null):
A selector for the right operand. Should not be specified if rightValue is specified.
leftValue (Object, default: null):
The value of the left operand. Should not be specified if leftField is specified.
Returns: Filter
ee.Join.simple()
返回一个连接,该连接生成与辅助集合的任何元素匹配的主集合的元素。结果中没有添加任何属性.
Returns a join that produces the elements of the primary collection that match any element of the secondary collection. No properties are added to the results.
No arguments.
Returns: Join
代码:
// 在兴趣点加载 Landsat 8 图像集合。 var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA') .filterBounds(ee.Geometry.Point(-122.09, 37.42)); // 定义过滤集合的开始和结束日期。 var april = '2014-04-01'; var may = '2014-05-01'; var june = '2014-06-01'; var july = '2014-07-01'; //第一部分影像 4 月至 6 月的 Landsat 图像集合。 var primary = collection.filterDate(april, june); // 第二部分影像集合是 5 月至 7 月的 Landsat 图像。 var secondary = collection.filterDate(may, july); // 使用 equals 过滤器来定义集合的匹配方式。这里用的是系统的指针 var filter = ee.Filter.equals({ leftField: 'system:index', rightField: 'system:index' }); // 创建连接 var simpleJoin = ee.Join.simple(); // 应用连接 var simpleJoined = simpleJoin.apply(primary, secondary, filter); // 展示结果 print('Simple join: ', simpleJoined);
结果:
在前面的示例中,观察要加入的集合在时间上重叠了大约一个月。请注意,应用此连接时,输出将是 ImageCollection
仅包含primary
集合中匹配图像的图像。输出应该类似于:
此输出显示两个图像在primary
和secondary
集合之间匹配(如过滤器中指定的那样) ,即年中第 125 天和 141 天或 5 月 5 日和 5 月 21 日的图像。