کاهش های گروهی و آمار منطقه ای

می توانید با استفاده از reducer.group() برای گروه بندی خروجی یک کاهنده بر اساس مقدار ورودی مشخص، آماری را در هر ناحیه از یک Image یا FeatureCollection بدست آورید. به عنوان مثال، برای محاسبه کل جمعیت و تعداد واحدهای مسکونی در هر ایالت، این مثال خروجی کاهش یک بلوک سرشماری FeatureCollection را به صورت زیر گروه بندی می کند:

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

// Load a collection of US census blocks.
var blocks = ee.FeatureCollection('TIGER/2010/Blocks');

// Compute sums of the specified properties, grouped by state code.
var sums = blocks
  .filter(ee.Filter.and(
    ee.Filter.neq('pop10', null),
    ee.Filter.neq('housing10', null)))
  .reduceColumns({
    selectors: ['pop10', 'housing10', 'statefp10'],
    reducer: ee.Reducer.sum().repeat(2).group({
      groupField: 2,
      groupName: 'state-code',
    })
});

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

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

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

import ee
import geemap.core as geemap

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

# Load a collection of US census blocks.
blocks = ee.FeatureCollection('TIGER/2010/Blocks')

# Compute sums of the specified properties, grouped by state code.
sums = blocks.filter(
    ee.Filter.And(
        ee.Filter.neq('pop10', None), ee.Filter.neq('housing10', None)
    )
).reduceColumns(
    selectors=['pop10', 'housing10', 'statefp10'],
    reducer=ee.Reducer.sum()
    .repeat(2)
    .group(groupField=2, groupName='state-code'),
)

# Print the resultant Dictionary.
display(sums)

آرگومان groupField شاخص ورودی در آرایه انتخابگرها است که حاوی کدهایی است که توسط آنها گروه بندی می شود، آرگومان groupName نام ویژگی را برای ذخیره مقدار متغیر گروه بندی مشخص می کند. از آنجایی که کاهنده به طور خودکار برای هر ورودی تکرار نمی شود، فراخوان repeat(2) مورد نیاز است.

برای گروه بندی خروجی image.reduceRegions() می توانید یک باند گروه بندی را مشخص کنید که گروه ها را با مقادیر پیکسل صحیح تعریف می کند. گاهی اوقات به این نوع محاسبات "آمار منطقه ای" گفته می شود که مناطق به عنوان باند گروه بندی مشخص می شوند و آمار توسط کاهنده تعیین می شود. در مثال زیر، تغییر در نور شب در ایالات متحده بر اساس طبقه بندی پوشش زمین گروه بندی شده است:

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

// Load a region representing the United States
var region = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017')
  .filter(ee.Filter.eq('country_na', 'United States'));

// Load MODIS land cover categories in 2001.
var landcover = ee.Image('MODIS/051/MCD12Q1/2001_01_01')
  // Select the IGBP classification band.
  .select('Land_Cover_Type_1');

// Load nightlights image inputs.
var nl2001 = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F152001')
  .select('stable_lights');
var nl2012 = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F182012')
  .select('stable_lights');

// Compute the nightlights decadal difference, add land cover codes.
var nlDiff = nl2012.subtract(nl2001).addBands(landcover);

// Grouped a mean reducer: change of nightlights by land cover category.
var means = nlDiff.reduceRegion({
  reducer: ee.Reducer.mean().group({
    groupField: 1,
    groupName: 'code',
  }),
  geometry: region.geometry(),
  scale: 1000,
  maxPixels: 1e8
});

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

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

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

import ee
import geemap.core as geemap

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

# Load a region representing the United States
region = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017').filter(
    ee.Filter.eq('country_na', 'United States')
)

# Load MODIS land cover categories in 2001.
landcover = ee.Image('MODIS/051/MCD12Q1/2001_01_01').select(
    # Select the IGBP classification band.
    'Land_Cover_Type_1'
)

# Load nightlights image inputs.
nl_2001 = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F152001').select(
    'stable_lights'
)
nl_2012 = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F182012').select(
    'stable_lights'
)

# Compute the nightlights decadal difference, add land cover codes.
nl_diff = nl_2012.subtract(nl_2001).addBands(landcover)

# Grouped a mean reducer: change of nightlights by land cover category.
means = nl_diff.reduceRegion(
    reducer=ee.Reducer.mean().group(groupField=1, groupName='code'),
    geometry=region.geometry(),
    scale=1000,
    maxPixels=1e8,
)

# Print the resultant Dictionary.
display(means)

توجه داشته باشید که در این مثال، groupField شاخص باندی است که شامل مناطقی است که بر اساس آن خروجی ها گروه بندی می شود. باند اول شاخص 0، دومی شاخص 1 و غیره است.