在特征集合上映射
通过对集合进行映射,可以对集合中的每个元素应用相同的操作。例如,让我们在康涅狄格州的每个县运行相同的几何操作:
1.与前面的例子类似,我们首先放大地图并加载 CT 县的特征集合。
// 设置中心点 Map.setCenter(-72.6978, 41.6798, 8); // 加载数据集 var countyData = ee.FeatureCollection('TIGER/2018/Counties'); // 过滤你要的信息 var countyConnect = countyData.filter( ee.Filter.eq('STATEFP', '09')); // 添加图层 Map.addLayer(countyConnect, {color: 'red'}, 'Original Collection');
2.我们定义函数,它将对特征执行几何操作。尝试更改函数中正在执行的操作以测试它对最终输出的影响。
function performMap(feature) { // 减少几何中的顶点数量;数字是指定最大值 // 以米为单位的误差。这仅用于说明目的,因为地球引擎 // 最多可以处理 100 万个顶点。 var simple = feature.simplify(10000); // 寻找集合质心 var center = simple.centroid(100); // 围绕几何返回缓冲区;数字表示缓冲区的宽度,以米为单位。 return center.buffer(5000, 100); }
3.最后,我们将定义的函数映射到集合中的所有特征。这种并行化通常比对集合的每个元素顺序执行操作快得多。
var mappedCentroid = countyConnect.map(performMap); Map.addLayer(mappedCentroid, {color: 'blue'}, 'Mapped buffed centroids');
最后的结果:
对特征的操作
创建具有特定属性值的特征
var feat = ee.Feature(geometry, {Name: 'featureName', Size: 500});
从现有要素创建要素,重命名属性
var featNew = feature.select(['name'], ['descriptor']);
从特征中提取属性的值
var featVal = feature.get('size');
示例:特征操作
让我们从头开始创建一个功能并使用它的属性:
// 创建一个几何 var varGeometry = ee.Geometry.Polygon(0, 0, 40, 30, 20, 20, 0, 0); // 从几何体创建特征。 var varFeature = ee.Feature(varGeometry, { name: ['Feature name', 'Supreme'], size: [500, 1000] }); // 获取属性的值。 var arr = varFeature.get('size'); // Print variable. print(arr); // 选择属性的子集并重命名它们。第二个参数名称成为属性名称 var varFeaturenew = varFeature.select(['name'], ['descriptor']); // Print variable. print(varFeaturenew);