التخفيضات المجمّعة والإحصاءات حسب المنطقة

يمكنك الحصول على إحصاءات في كل منطقة من Image أو FeatureCollection باستخدام reducer.group() لتجميع الإخراج لمُختزل حسب قيمة إدخال محدّد. على سبيل المثال، لاحتساب إجمالي عدد السكان وعدد الوحدات السكنية في كل ولاية، يجمع هذا المثال الناتج عن تقليل مجموعة إحصائية FeatureCollection على النحو التالي:

محرِّر الرموز البرمجية (JavaScript)

// 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);

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

# 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()، يمكنك تحديد نطاق تجميع يحدّد المجموعات حسب قيم البكسل الصحيحة. يُطلق على هذا النوع من العمليات الحسابية أحيانًا اسم "الإحصاءات على مستوى المناطق"، حيث يتم تحديد المناطق على أنّها نطاق التجميع ويتم تحديد الإحصاءات من خلال أداة التقليل. في المثال التالي، تم تجميع التغيير في الأضواء الليلية في الولايات المتحدة حسب فئة تغطية الأرض:

محرِّر الرموز البرمجية (JavaScript)

// 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);

إعداد لغة Python

اطّلِع على صفحة بيئة Python للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

import ee
import geemap.core as geemap

Colab (Python)

# 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، وهكذا.