ภาพรวมของตัวลด

ตัวลดข้อมูลเป็นวิธีรวบรวมข้อมูลตามช่วงเวลา พื้นที่ แถบ อาร์เรย์ และโครงสร้างข้อมูลอื่นๆ ใน Earth Engine คลาส ee.Reducer จะระบุวิธีรวบรวมข้อมูล ตัวลดขนาดในคลาสนี้สามารถระบุสถิติง่ายๆ เพื่อใช้สำหรับการรวม (เช่น ค่าต่ำสุด ค่าสูงสุด ค่าเฉลี่ย ค่ามัธยฐาน ค่าเบี่ยงเบนมาตรฐาน ฯลฯ) หรือสรุปข้อมูลอินพุตที่ซับซ้อนมากขึ้น (เช่น ฮิสโตแกรม การหาค่าสัมประสิทธ์เชิงเส้น รายการ) การลดอาจเกิดขึ้นเมื่อเวลาผ่านไป (imageCollection.reduce()), พื้นที่ (image.reduceRegion(), image.reduceNeighborhood()), แบนด์ (image.reduce()) หรือพื้นที่แอตทริบิวต์ของ FeatureCollection (featureCollection.reduceColumns() หรือเมธอด FeatureCollection ที่ขึ้นต้นด้วย aggregate_)

ตัวลดมีอินพุตและเอาต์พุต

ตัวลดจะนําชุดข้อมูลอินพุตไปสร้างเอาต์พุตรายการเดียว เมื่อใช้ตัวลดข้อมูลอินพุตรายการเดียวกับรูปภาพหลายย่านความถี่ Earth Engine จะทําซ้ำตัวลดข้อมูลนั้นโดยอัตโนมัติและใช้กับแต่ละย่านความถี่แยกกัน ด้วยเหตุนี้ รูปภาพเอาต์พุตจึงมีจำนวนแถบเท่ากับรูปภาพอินพุต โดยแต่ละแถบในเอาต์พุตเป็นการลดจำนวนพิกเซลจากแถบที่เกี่ยวข้องในข้อมูลอินพุต ตัวลดบางรายการใช้ทูเพลตของชุดข้อมูลอินพุต ระบบจะไม่ทำซ้ำตัวลดขนาดเหล่านี้โดยอัตโนมัติสำหรับแต่ละย่านความถี่ ตัวอย่างเช่น ee.Reducer.LinearRegression() จะนําชุดข้อมูลตัวทำนายหลายชุด (แสดงตัวแปรอิสระในการถดถอย) ตามลําดับที่เจาะจง (ดูตัวลดการถดถอย)

ตัวลดบางรายการจะสร้างเอาต์พุตหลายรายการ เช่น ee.Reducer.minMax(), ee.Reducer.histogram() หรือ ee.Reducer.toList() เช่น

เครื่องมือแก้ไขโค้ด (JavaScript)

// Load and filter the Sentinel-2 image collection.
var collection = ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
    .filterDate('2016-01-01', '2016-12-31')
    .filterBounds(ee.Geometry.Point([-81.31, 29.90]));

// Reduce the collection.
var extrema = collection.reduce(ee.Reducer.minMax());

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Load and filter the Sentinel-2 image collection.
collection = (
    ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
    .filterDate('2016-01-01', '2016-12-31')
    .filterBounds(ee.Geometry.Point([-81.31, 29.90]))
)

# Reduce the collection.
extrema = collection.reduce(ee.Reducer.minMax())

ซึ่งจะสร้างเอาต์พุตที่มีจำนวนแถบเป็น 2 เท่าของอินพุต โดยชื่อแถบในเอาต์พุตจะมี "_min" หรือ "_max" ต่อท้ายชื่อแถบ

ประเภทเอาต์พุตควรตรงกับการคํานวณ เช่น ตัวลดที่ใช้กับ ImageCollection จะให้เอาต์พุตเป็น Image เนื่องจากระบบจะตีความเอาต์พุตเป็นค่าพิกเซล คุณจึงต้องใช้ตัวลดที่มีเอาต์พุตที่เป็นตัวเลขเพื่อลด ImageCollection (ตัวลดอย่าง toList() หรือ histogram() จะใช้ไม่ได้)

ตัวลดใช้อินพุตที่มีน้ำหนัก

โดยค่าเริ่มต้น การลดค่าพิกเซลจะถ่วงน้ำหนักตามมาสก์ แต่คุณเปลี่ยนลักษณะการทํางานนี้ได้ (ดูส่วนการถ่วงน้ำหนัก) ระบบจะไม่ใช้พิกเซลที่มีมาสก์เท่ากับ 0 ในการลดขนาด

การรวมตัวลด

หากต้องการใช้ตัวลดหลายรายการกับอินพุตเดียวกัน คุณควรcombine()ตัวลดเพื่อประสิทธิภาพ กล่าวโดยละเอียดคือ การเรียกใช้ combine() ในรีดิวเซอร์ที่มีการตั้งค่า sharedInputs เป็น true จะส่งผลให้มีการเรียกใช้ข้อมูลเพียงครั้งเดียว เช่น หากต้องการคํานวณค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของพิกเซลในรูปภาพ คุณอาจใช้โค้ดประมาณนี้

เครื่องมือแก้ไขโค้ด (JavaScript)

// Load a Landsat 8 image.
var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318');

// Combine the mean and standard deviation reducers.
var reducers = ee.Reducer.mean().combine({
  reducer2: ee.Reducer.stdDev(),
  sharedInputs: true
});

// Use the combined reducer to get the mean and SD of the image.
var stats = image.reduceRegion({
  reducer: reducers,
  bestEffort: true,
});

// Display the dictionary of band means and SDs.
print(stats);

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Load a Landsat 8 image.
image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318')

# Combine the mean and standard deviation reducers.
reducers = ee.Reducer.mean().combine(
    reducer2=ee.Reducer.stdDev(), sharedInputs=True
)

# Use the combined reducer to get the mean and SD of the image.
stats = image.reduceRegion(reducer=reducers, bestEffort=True)

# Display the dictionary of band means and SDs.
display(stats)

ในเอาต์พุต โปรดทราบว่าระบบได้เพิ่มชื่อตัวลดขนาดต่อท้ายชื่ออินพุตเพื่อแยกเอาต์พุตของตัวลดขนาด ลักษณะการทำงานนี้มีผลกับเอาต์พุตรูปภาพด้วย ซึ่งจะมีชื่อของตัวลดต่อท้ายชื่อแบนด์เอาต์พุต

หากคุณกำลังรวมตัวลดที่ใช้อินพุตที่ไม่มีน้ำหนักเข้ากับตัวลดที่ใช้อินพุตที่มีน้ำหนัก อินพุตที่มีน้ำหนักทั้งหมดต้องอยู่ก่อนอินพุตที่ไม่มีน้ำหนักทั้งหมด