آمار ستون های FeatureCollection

برای کاهش ویژگی‌های ویژگی‌ها در FeatureCollection ، از featureCollection.reduceColumns() استفاده کنید. مثال اسباب بازی زیر را در نظر بگیرید:

ویرایشگر کد (جاوا اسکریپت)

// Make a toy FeatureCollection.
var aFeatureCollection = ee.FeatureCollection([
  ee.Feature(null, {foo: 1, weight: 1}),
  ee.Feature(null, {foo: 2, weight: 2}),
  ee.Feature(null, {foo: 3, weight: 3}),
]);

// Compute a weighted mean and display it.
print(aFeatureCollection.reduceColumns({
  reducer: ee.Reducer.mean(),
  selectors: ['foo'],
  weightSelectors: ['weight']
}));

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

import ee
import geemap.core as geemap

کولب (پایتون)

# Make a toy FeatureCollection.
a_feature_collection = ee.FeatureCollection([
    ee.Feature(None, {'foo': 1, 'weight': 1}),
    ee.Feature(None, {'foo': 2, 'weight': 2}),
    ee.Feature(None, {'foo': 3, 'weight': 3}),
])

# Compute a weighted mean and display it.
display(
    a_feature_collection.reduceColumns(
        reducer=ee.Reducer.mean(), selectors=['foo'], weightSelectors=['weight']
    )
)

توجه داشته باشید که ورودی ها با توجه به ویژگی weight مشخص شده وزن می شوند. بنابراین نتیجه این است:

mean: 2.333333333333333
    

به عنوان یک مثال پیچیده تر، یک FeatureCollection از بلوک های سرشماری ایالات متحده با داده های سرشماری را به عنوان ویژگی در نظر بگیرید. متغیرهای مورد علاقه کل جمعیت و کل واحدهای مسکونی است. می‌توانید با ارائه آرگومان کاهش‌دهنده جمع‌آوری به reduceColumns() و چاپ نتیجه، مجموع (های) آنها را دریافت کنید:

ویرایشگر کد (جاوا اسکریپت)

// Load US census data as a FeatureCollection.
var census = ee.FeatureCollection('TIGER/2010/Blocks');

// Filter the collection to include only Benton County, OR.
var benton = census.filter(
  ee.Filter.and(
    ee.Filter.eq('statefp10', '41'),
    ee.Filter.eq('countyfp10', '003')
  )
);

// Display Benton County census blocks.
Map.setCenter(-123.27, 44.57, 13);
Map.addLayer(benton);

// Compute sums of the specified properties.
var properties = ['pop10', 'housing10'];
var sums = benton
    .filter(ee.Filter.notNull(properties))
    .reduceColumns({
      reducer: ee.Reducer.sum().repeat(2),
      selectors: properties
    });

// Print the resultant Dictionary.
print(sums);

راه اندازی پایتون

برای اطلاعات در مورد API پایتون و استفاده از geemap برای توسعه تعاملی به صفحه محیط پایتون مراجعه کنید.

import ee
import geemap.core as geemap

کولب (پایتون)

# Load US census data as a FeatureCollection.
census = ee.FeatureCollection('TIGER/2010/Blocks')

# Filter the collection to include only Benton County, OR.
benton = census.filter(
    ee.Filter.And(
        ee.Filter.eq('statefp10', '41'), ee.Filter.eq('countyfp10', '003')
    )
)

# Display Benton County census blocks.
m = geemap.Map()
m.set_center(-123.27, 44.57, 13)
m.add_layer(benton)
display(m)

# Compute sums of the specified properties.
properties = ['pop10', 'housing10']
sums = benton.filter(ee.Filter.notNull(properties)).reduceColumns(
    reducer=ee.Reducer.sum().repeat(2), selectors=properties
)

# Print the resultant Dictionary.
display(sums)

خروجی یک Dictionary است که ویژگی تجمیع شده را با توجه به کاهش دهنده مشخص شده نشان می دهد:

sum: [85579,36245]
    

توجه داشته باشید که مثال بالا از فیلتر notNull() استفاده می‌کند تا فقط ویژگی‌هایی را با ورودی‌های غیر تهی برای ویژگی‌های انتخاب‌شده در مجموعه که کاهش می‌یابند، شامل شود. بررسی ورودی‌های تهی برای گرفتن داده‌های گمشده غیرمنتظره و اجتناب از خطاهای ناشی از محاسبات حاوی مقادیر تهی، تمرین خوبی است.

همچنین توجه داشته باشید که برخلاف imageCollection.reduce() که در آن کاهنده ها به طور خودکار برای هر باند تکرار می شوند، کاهنده ها در FeatureCollection باید به صراحت با استفاده از repeat() تکرار شوند. به طور خاص، کاهنده m را برای m ورودی تکرار کنید. خطای زیر ممکن است در نتیجه عدم تکرار کاهنده ایجاد شود: