สถิติของภูมิภาครูปภาพ

reduceRegion

หากต้องการดูสถิติค่าพิกเซลในภูมิภาคของ ee.Image ให้ใช้ image.reduceRegion() การดำเนินการนี้จะลดพิกเซลทั้งหมดในภูมิภาคเป็นสถิติหรือการแสดงข้อมูลพิกเซลแบบย่ออื่นๆ ในภูมิภาค (เช่น ฮิสโทแกรม) ภูมิภาคจะแสดงเป็น Geometry ซึ่งอาจเป็นรูปหลายเหลี่ยมที่มีหลายพิกเซล หรืออาจเป็นจุดเดียว ในกรณีนี้จะมีพิกเซลเพียง 1 พิกเซลในภูมิภาค ไม่ว่าจะในกรณีใดก็ตาม ดังที่แสดงในรูปที่ 1 เอาต์พุต คือสถิติที่ได้จากพิกเซลในภูมิภาค

แผนภาพ reduceRegion
รูปที่ 1 ภาพของee.Reducerที่ใช้กับรูปภาพ และภูมิภาค

ตัวอย่างการรับสถิติพิกเซลในภูมิภาคของรูปภาพโดยใช้ reduceRegion() ให้พิจารณาการหาค่าสเปกตรัมเฉลี่ย ของคอมโพสิต Landsat 5 ปีภายในขอบเขตของป่าสน Sierra Nevada (แสดงในรูปที่ 2)

// Load input imagery: Landsat 7 5-year composite.
var image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012');

// Load an input region: Sierra Nevada.
var region = ee.Feature(ee.FeatureCollection('EPA/Ecoregions/2013/L3')
  .filter(ee.Filter.eq('us_l3name', 'Sierra Nevada'))
  .first());

// Reduce the region. The region parameter is the Feature geometry.
var meanDictionary = image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region.geometry(),
  scale: 30,
  maxPixels: 1e9
});

// The result is a Dictionary.  Print it.
print(meanDictionary);

หากต้องการบังคับให้มีการคำนวณ เพียงแค่พิมพ์ผลลัพธ์ ซึ่งตัวแก้ไขโค้ดจะ แสดงเป็น Dictionary ในคอนโซล เอาต์พุตควรมีลักษณะดังนี้

B1: 25.406029716816853
B2: 23.971497014238988
B3: 22.91059593763103
B4: 54.83164133293403
B5: 38.07655472573677
B6_VCID_2: 198.93216428012906
B7: 24.063261634961563
แผนภาพ reduceRegion
รูปที่ 2 ภาพผสมสีเท็จของข้อมูลภาพ Landsat สำหรับ แคลิฟอร์เนียและเนวาดา ภูมิภาคที่จะลดจะแสดงเป็นสีขาว

โปรดทราบว่าในตัวอย่างนี้ การลดจะระบุโดยการระบุ reducer (ee.Reducer.mean()), geometry (region.geometry()), scale (30 เมตร) และ maxPixels สำหรับจำนวนสูงสุดของ พิกเซลที่จะป้อนลงในตัวลด ควรระบุมาตราส่วนใน การเรียก reduceRegion() เสมอ เนื่องจากในโฟลว์การประมวลผลที่ซับซ้อน ซึ่งอาจเกี่ยวข้องกับข้อมูลจากแหล่งที่มาต่างๆ ที่มีสเกลแตกต่างกัน ระบบจะไม่สามารถกำหนดสเกลของเอาต์พุตจากอินพุตได้อย่างชัดเจน ในกรณีดังกล่าว สเกลจะตั้งค่าเริ่มต้น เป็น 1 องศา ซึ่งโดยทั่วไปจะให้ผลลัพธ์ที่ไม่น่าพอใจ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Earth Engine จัดการสเกลได้ที่หน้านี้

การตั้งค่าสเกลทำได้ 2 วิธี ได้แก่ การระบุพารามิเตอร์ scale หรือการระบุ CRS และการแปลง CRS (ดูข้อมูลเพิ่มเติมเกี่ยวกับ CRS และการเปลี่ยน CRS ได้ที่อภิธานศัพท์) ตัวอย่างเช่น meanDictionaryการลด (ด้านบน) เทียบเท่ากับรายการต่อไปนี้

// As an alternative to specifying scale, specify a CRS and a CRS transform.
// Make this array by constructing a 4326 projection at 30 meters,
// then copying the bounds of the composite, from composite.projection().
var affine = [0.00026949458523585647, 0, -180, 0, -0.00026949458523585647, 86.0000269494563];

// Perform the reduction, print the result.
print(image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region.geometry(),
  crs: 'EPSG:4326',
  crsTransform: affine,
  maxPixels: 1e9
}));

โดยทั่วไปแล้ว การระบุสเกลก็เพียงพอและทำให้โค้ดอ่านง่ายขึ้น Earth Engine จะกำหนดพิกเซลที่จะป้อนลงในตัวลดโดยการแรสเตอร์ภูมิภาคก่อน หากระบุสเกลโดยไม่มี CRS ระบบจะแรสเตอร์ภูมิภาคในการฉายภาพดั้งเดิมของรูปภาพที่ปรับขนาดเป็นความละเอียดที่ระบุ หากระบุทั้ง CRS และมาตราส่วน ระบบจะ แปลงภูมิภาคเป็นแรสเตอร์ตามข้อมูลดังกล่าว

Pixel ในภูมิภาค

ระบบจะพิจารณาว่าพิกเซลอยู่ในภูมิภาค (และกำหนดน้ำหนัก) ตามกฎต่อไปนี้ ซึ่งใช้ในมาตราส่วนและการฉายภาพที่ระบุ

  • ตัวลดทอนที่ไม่ถ่วงน้ำหนัก (เช่น ee.Reducer.count() หรือ ee.Reducer.mean().unweighted()): ระบบจะรวมพิกเซลหากจุดศูนย์ถ่วงอยู่ใน ภูมิภาคและมาสก์ของรูปภาพไม่ใช่ 0
  • ตัวลดน้ำหนัก (เช่น ee.Reducer.mean()): รวมพิกเซลหากมีพิกเซลอย่างน้อย (โดยประมาณ) 1/256 (~0.4%) อยู่ในภูมิภาคและ มาสก์ของรูปภาพไม่ใช่ 0 โดยน้ำหนักคือค่าต่ำสุดของมาสก์ของรูปภาพและ เศษส่วน (โดยประมาณ) ของพิกเซลที่ครอบคลุมโดยภูมิภาค น้ำหนักการตัดกันของพิกเซลจะแสดงเป็นจำนวนเต็ม 8 บิต (0 ถึง 255) ภายใน โดยจะมีการหาปริมาณความครอบคลุมที่เป็นเศษส่วนเป็น 256 ระดับที่แยกกัน

ต้องมีพารามิเตอร์ maxPixels เพื่อให้การคำนวณสำเร็จ หากไม่ได้ระบุพารามิเตอร์นี้ในตัวอย่าง ระบบจะแสดงข้อผิดพลาดซึ่งมีลักษณะดังนี้

คุณมีตัวเลือกหลายอย่างในการแก้ไขข้อผิดพลาดเหล่านี้ ได้แก่ เพิ่ม maxPixels ตามตัวอย่าง เพิ่ม scale หรือตั้งค่า bestEffort เป็น true ซึ่งจะคำนวณสเกลใหม่ (ใหญ่ขึ้น) โดยอัตโนมัติเพื่อให้ไม่เกิน maxPixels หากไม่ได้ระบุ maxPixels ระบบจะใช้ค่าเริ่มต้น