برای کاهش ویژگیهای ویژگیها در 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'] }));
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);
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 ورودی تکرار کنید. خطای زیر ممکن است در نتیجه عدم تکرار کاهنده ایجاد شود: