สรุปสถิติในภูมิภาคขนาดใหญ่ใน Google Earth Engine
ฉันกำลังต่อสู้กับปัญหาในการลดค่า 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
คำตอบ
ความคิดของฉันพยายามวางตารางบางประเภทที่สามารถสร้างพื้นที่เล็ก ๆ จากนั้นสร้างพจนานุกรมและหาค่าเฉลี่ยของค่าเฉลี่ยจากตาราง
สิ่งนี้ไม่จำเป็น - 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
อยู่แล้วดำเนินการเฉพาะในภูมิภาคที่ระบุและตัดมันแยกกันจะทำคำนวณพิเศษไม่มีประโยชน์ใด ๆ