การส่งออกแผนภูมิและรูปภาพ

Earth Engine เป็นเครื่องมือวิเคราะห์ที่มีประสิทธิภาพ แต่คุณอาจต้องส่งออกผลลัพธ์ ของการวิเคราะห์เพื่อฝังแผนภูมิ รูปภาพ แผนที่ ฯลฯ ลงในรายงานหรือ สิ่งพิมพ์ ในส่วนนี้ คุณจะได้เรียนรู้วิธีสร้างแผนภูมิและรูปภาพ ที่ส่งออกและดูในซอฟต์แวร์อื่นๆ ได้ โปรดจำว่าในส่วนก่อนหน้า คุณใช้โค้ดต่อไปนี้เพื่อเพิ่มแบนด์ NDVI ลงในทุกรูปภาพในคอลเล็กชัน โดยที่ตัวแปร l8 อ้างอิงถึงคอลเล็กชันการสะท้อน TOA ของ Landsat 8

โปรแกรมแก้ไขโค้ด (JavaScript)

// Import the Landsat 8 TOA image collection.
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

// Map a function over the Landsat 8 TOA collection to add an NDVI band.
var withNDVI = l8.map(function(image) {
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
});

อวดชาร์ตเพลง

สมมติว่าสิ่งที่คุณต้องการคือแผนภูมิ NDVI เมื่อเวลาผ่านไป ณ ตำแหน่งที่กำหนด หากต้องการ สร้างแผนภูมิดังกล่าว ขั้นตอนแรกคือการเลือกสถานที่ที่สนใจ สร้างจุด โดยรับเครื่องมือวาดจุด () และสร้างรูปเรขาคณิตแบบจุดเดียวในพื้นที่ที่คุณสนใจ (หากคุณมีการนำเข้าอยู่แล้ว ให้วางเมาส์เหนือการนำเข้าเรขาคณิต แล้วคลิก + เลเยอร์ใหม่ ก่อน) ระบุจุดในพื้นที่เกษตรกรรม ป่าผลัดใบ ทุ่งหญ้าประจำปี หรือพื้นที่ปกคลุมอื่นๆ ที่มีวงจรประจำปี ตั้งชื่อการนำเข้า roi (ดูข้อมูลเกี่ยวกับการสร้างเรขาคณิตโดยใช้โปรแกรมได้ที่หน้านี้)

ตอนนี้เรามาใช้roiจุดเพื่อสร้างแผนภูมิ NDVI เมื่อเวลาผ่านไปในพิกเซล ใต้จุดนั้นกัน วิธีสร้างแผนภูมิใน Earth Engine คือใช้แพ็กเกจ ui.Chart (ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างแผนภูมิใน Earth Engine) โดยเฉพาะอย่างยิ่ง หากต้องการสร้างแผนภูมิตามช่วงเวลา คุณสามารถใช้วิธีต่อไปนี้ ui.Chart.image.series()

โปรแกรมแก้ไขโค้ด (JavaScript)

// Create a chart.
var chart = ui.Chart.image.series({
  imageCollection: withNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'NDVI over time'});

// Display the chart in the console.
print(chart);

สำหรับroiเรขาคณิต เราเลือกจุดในพื้นที่เกษตรกรรม ซึ่งส่งผล ให้เกิดแผนภูมิที่ดูคล้ายกับรูปที่ 10 โปรดทราบว่าพารามิเตอร์ของตัวสร้างแผนภูมิ มีตัวลดและมาตราส่วน เช่น reduceRegion() เนื่องจากจุดที่เราให้เป็นภูมิภาคจะตัดกับพิกเซลได้เพียงพิกเซลเดียว จึงเพียงพอที่จะใช้ตัวลด "first" หากมีภูมิภาคที่ใหญ่ขึ้น คุณควรใช้ "ค่าเฉลี่ย" หรือตัวลดอื่นๆ ที่ระบุวิธีรวมพิกเซล นอกจากนี้ โปรดทราบว่าหากต้องการแสดงภาพแผนภูมิ สิ่งที่คุณต้องทำคือพิมพ์แผนภูมิ

Tutorial_api_10_ndvi_chart.png
รูปที่ 10 แผนภูมิ NDVI ของ Landsat เมื่อเวลาผ่านไปที่รูปเรขาคณิตแบบจุด

การนอกเรื่อง: การมาสก์เมฆอย่างง่ายสำหรับ Landsat

สิ่งที่คุณอาจสังเกตเห็นเกี่ยวกับแผนภูมินี้คืออนุกรมเวลาของค่า NDVI ที่จุดนั้นดูไม่ค่อยราบรื่น ซึ่งน่าจะเกิดจากเมฆ Earth Engine มีอัลกอริทึมการมาสก์เมฆสำหรับเซ็นเซอร์ Landsat ที่มี แถบความร้อน ee.Algorithms.Landsat.simpleCloudScore() เพื่อลดผลกระทบนี้ โดยรับภาพการสะท้อน TOA ของ Landsat เป็นอินพุตและเพิ่มแบนด์ชื่อ cloud ซึ่งเป็นดัชนี ความมีเมฆในพิกเซลจาก 0 ถึง 100 จากมีเมฆน้อยที่สุดไปจนถึงมีเมฆมากที่สุดตามลำดับ การ แก้ไขฟังก์ชันที่คุณแมปกับคอลเล็กชันจะช่วยให้คุณใช้เกณฑ์ที่กำหนดเอง (20) ในดัชนีระบบคลาวด์เพื่อล้างแผนภูมิได้เล็กน้อย

โปรแกรมแก้ไขโค้ด (JavaScript)

var cloudlessNDVI = l8.map(function(image) {
  // Get a cloud score in [0, 100].
  var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');

  // Create a mask of cloudy pixels from an arbitrary threshold.
  var mask = cloud.lte(20);

  // Compute NDVI.
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');

  // Return the masked image with an NDVI band.
  return image.addBands(ndvi).updateMask(mask);
});

print(ui.Chart.image.series({
  imageCollection: cloudlessNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'Cloud-masked NDVI over time'}));

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

Tutorial_api_11_cloudless_chart.png
รูปที่ 11 แผนภูมิ NDVI ที่มาสก์เมฆในช่วงระยะเวลาหนึ่งที่รูปทรงเรขาคณิตของจุด

การส่งออกรูปภาพ

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

โปรแกรมแก้ไขโค้ด (JavaScript)

var greenest = cloudlessNDVI.qualityMosaic('NDVI');

ความแตกต่างเพียงอย่างเดียวในโค้ดนี้จากสิ่งที่คุณทำก่อนหน้านี้คือตอนนี้เราใช้คอลเล็กชันที่มาสก์ในระบบคลาวด์ คุณสามารถส่งออกชุดข้อมูลย่อย (กำหนดโดยภูมิภาค) ของข้อมูลนี้ได้ โดยใช้แพ็กเกจ Export (ดูข้อมูลเพิ่มเติมเกี่ยวกับการส่งออก ข้อมูลแรสเตอร์และเวกเตอร์จาก Earth Engine) เช่น หากต้องการส่งออกรูปภาพที่ฝังในเอกสารอื่นๆ ได้ง่าย ให้สร้างรูปภาพการแสดงข้อมูลด้วยภาพตามที่เคยทำ แล้วส่งออกไปยังโฟลเดอร์ Google ไดรฟ์

โปรแกรมแก้ไขโค้ด (JavaScript)

// Create a 3-band, 8-bit, color-IR composite to export.
var visualization = greenest.visualize({
  bands: ['B5', 'B4', 'B3'],
  max: 0.4
});

// Create a task that you can launch from the Tasks tab.
Export.image.toDrive({
  image: visualization,
  description: 'Greenest_pixel_composite',
  scale: 30
});

เมื่อเรียกใช้โค้ดนี้ โปรดทราบว่าระบบจะสร้างงานใหม่ในแท็บงาน หากต้องการเปิดกล่องโต้ตอบการกำหนดค่าการส่งออก ให้คลิกปุ่มเรียกใช้ในแท็บงาน เมื่อกำหนดค่างานแล้ว ให้คลิกปุ่มเรียกใช้ ในกล่องโต้ตอบเพื่อเริ่มการส่งออก แต่โปรดทราบว่า

เหตุผลที่คุณควรระมัดระวังเมื่อส่งออกโดยไม่มีอาร์กิวเมนต์ region คือหากคุณตั้งค่า scale เป็นค่าที่ค่อนข้างเล็ก และซูมออก แผนที่ไปยังพื้นที่ขนาดใหญ่ คุณจะส่งออกอิมเมจที่อาจมีขนาดใหญ่มาก ไปยังโฟลเดอร์ไดรฟ์ ดูรายละเอียดเพิ่มเติมและรายการพารามิเตอร์การกำหนดค่าที่เป็นไปได้ได้ในExport.image.toDrive()เอกสารใน แท็บเอกสาร

การแนะนำ Earth Engine API ก็จบลงแต่เพียงเท่านี้ ตอนนี้คุณได้เห็นฟังก์ชันการทำงานที่พบบ่อยที่สุดของ Earth Engine แล้ว และควรจะสามารถดำเนินการวิเคราะห์ที่ซับซ้อนมากขึ้นได้อย่างมั่นใจ โปรดอ่านเอกสารและค้นหาคำตอบสำหรับคำถามอื่นๆ ในฟอรัม ขอให้สนุกกับการเขียนโค้ด