คุณดูสถิติในแต่ละโซนของ 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);
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);
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 เป็นต้น