สรุปสถิติในภูมิภาคขนาดใหญ่ใน Google Earth Engine

Aug 18 2020

ฉันกำลังต่อสู้กับปัญหาในการลดค่า NDVI สำหรับอเมริกาใต้ ฉันสนใจที่จะรู้ว่าค่าเฉลี่ย NDVI สำหรับทวีปนี้เป็นอย่างไร (ค่าเดียว) โดยไม่ต้องสูญเสียความละเอียดโดยการเพิ่มขนาดพิกเซลของฉันเป็นจำนวนมาก ความคิดของฉันพยายามวางตารางบางประเภทที่สามารถสร้างพื้นที่เล็ก ๆ จากนั้นสร้างพจนานุกรมและหาค่าเฉลี่ยของค่าเฉลี่ยจากตาราง ฉันไม่แน่ใจว่าตรรกะของฉันถูกต้องหรือไม่ แต่ฉันหวังว่าฉันจะอยู่ในเส้นทางที่โอเค GEE จะทำสิ่งนี้ได้ไหมและถ้าเป็นเช่นนั้นมีวิธีสร้างฟังก์ชันเพื่อทำให้งานนี้ง่ายขึ้นหรือไม่?

รหัสนี้ใช้ไม่ได้ด้วยเหตุผลที่ชัดเจน ... ระบบหมดเวลาและขีด จำกัด หน่วยความจำ

var sam_mean = fit_year_ndvi.clip(sam).reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: sam,
  scale: 1000,
  maxPixels: 1e12
});

นี่คือลิงค์ของฉัน: https://code.earthengine.google.com/b8486d4ef347cde7555614254b143ec7

นี่คือลิงค์สินทรัพย์ของฉัน: https://code.earthengine.google.com/?asset=users/anna_odell/continents

คำตอบ

1 KevinReid Aug 19 2020 at 03:05

ความคิดของฉันพยายามวางตารางบางประเภทที่สามารถสร้างพื้นที่เล็ก ๆ จากนั้นสร้างพจนานุกรมและหาค่าเฉลี่ยของค่าเฉลี่ยจากตาราง

สิ่งนี้ไม่จำเป็น - Earth Engine จะแบ่งย่อยreduceRegionการดำเนินการของคุณเพื่อให้คำนวณได้อย่างมีประสิทธิภาพ อย่างไรก็ตามคุณอาจต้องใช้เวลามากขึ้นในการดำเนินการให้เสร็จสิ้น วิธีแก้ปัญหานี้คือการรันการดำเนินการเป็นชุดงาน (ส่งออก) หากผลลัพธ์สุดท้ายของคุณเป็นเพียงตัวเลขและไม่ใช่ข้อมูลที่ซับซ้อนมากขึ้นคุณสามารถใส่ไว้ในฟีเจอร์เพื่อให้ส่งออกได้:

var collection_for_export = ee.FeatureCollection([
  ee.Feature(null, {'sam_mean': sam_mean})
]);
Export.table.toDrive({
  collection: collection_for_export,
  fileFormat: 'CSV',
});

ฉันสังเกตด้วยว่าคุณมี:

var sam_mean = fit_year_ndvi.clip(sam).reduceRegion({
  geometry: sam,
  ...

.clip(sam)ไม่จำเป็นเพราะreduceRegionอยู่แล้วดำเนินการเฉพาะในภูมิภาคที่ระบุและตัดมันแยกกันจะทำคำนวณพิเศษไม่มีประโยชน์ใด ๆ