אפשר לקבל נתונים סטטיסטיים בכל אזור של Image
או של FeatureCollection
באמצעות reducer.group()
כדי לקבץ את הפלט של המצמצם לפי הערך של קלט מסוים. לדוגמה, כדי לחשב את האוכלוסייה הכוללת ואת מספר יחידות הדיור בכל מדינה, בדוגמה הזו מקובצים הפלט של צמצום של בלוק במפקד FeatureCollection
באופן הבא:
Code Editor (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);
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
מציין את שם המאפיין שבו יישמר הערך של משתנה הקיבוץ. מכיוון שה-reducer לא חוזר על עצמו באופן אוטומטי לכל קלט, צריך את הקריאה ל-repeat(2)
.
כדי לקבץ את הפלט של image.reduceRegions()
, אפשר לציין פס קיבוץ שמגדיר קבוצות לפי ערכי פיקסלים שלמים. לפעמים קוראים לסוג החישוב הזה 'נתונים סטטיסטיים של תחום גיאוגרפי', כאשר התחומים הגיאוגרפיים מצוינים כפס ההתאמה, והנתון הסטטיסטי נקבע על ידי המצמצם. בדוגמה הבאה, השינוי בנתוני התאורה בלילה בארצות הברית מקובץ לפי קטגוריה של כיסוי פני השטח:
Code Editor (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);
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 וכן הלאה.