การลดราคาที่จัดกลุ่มและสถิติระดับโซน

คุณดูสถิติในแต่ละโซนของ 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 API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

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 API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

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 เป็นต้น