เริ่มต้นใช้งาน Earth Engine

คู่มือเริ่มต้นใช้งานนี้มีไว้เพื่อเป็นวิธีเริ่มต้นการเขียนโปรแกรมด้วย Earth Engine JavaScript API อย่างรวดเร็ว ดูข้อมูลเบื้องต้นเกี่ยวกับ JavaScript และแบบฝึกหัดเชิงลึกเพิ่มเติมเกี่ยวกับ Earth Engine API ได้ที่บทแนะนำ ดูรูปแบบการเขียนโค้ด JavaScript ที่แนะนําได้ที่คู่มือสไตล์ JavaScript ของ Google

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

วิธีใช้เอกสารเหล่านี้

เอกสารประกอบของ Earth Engine ออกแบบมาสำหรับผู้ที่คุ้นเคยกับการวิเคราะห์ข้อมูลเชิงพื้นที่ เอกสารมีโครงสร้างตามประเภทข้อมูลเป็นหลัก เช่น การนำทางด้านซ้ายจะมีลิงก์ไปยังส่วนหรือหน้าเกี่ยวกับประเภทข้อมูลที่สำคัญ เช่น Image, ImageCollection, Feature, FeatureCollection, Geometry, Reducer, Chart, Join และ Array คู่มือนี้จะอธิบายเกี่ยวกับประเภทเหล่านี้เพียงพอให้คุณเริ่มต้นใช้งาน นอกจากนี้ยังมีส่วนแมชชีนเลิร์นนิง อัลกอริทึมเฉพาะหรือเฉพาะเซ็นเซอร์ (เช่น อัลกอริทึมของ Landsat) แอปที่แสดงต่อสาธารณะ การจัดการข้อมูล (ชิ้นงาน) และรายละเอียดสำคัญเกี่ยวกับการทํางานภายในของ Earth Engine ก่อนเริ่มต้นใช้งานฟีเจอร์เหล่านี้ ให้เริ่มที่นี่

ตัวแก้ไขโค้ด

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

ตัวแก้ไขโค้ด
รูปที่ 1 ตัวแก้ไขโค้ด Earth Engine ที่ code.earthengine.google.com

การเปิดและเรียกใช้โค้ดในเครื่องมือแก้ไขโค้ด

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

  1. เปิดเครื่องมือแก้ไขโค้ด Earth Engine ได้ที่ code.earthengine.google.com
  2. ไปที่แท็บสคริปต์ทางด้านซ้ายสุดของตัวแก้ไขโค้ด คุณจะเห็นคอลเล็กชันสคริปต์ตัวอย่างที่เข้าถึง แสดง และวิเคราะห์ข้อมูล Earth Engine
  3. ในส่วน "คอลเล็กชันรูปภาพ" ให้เลือกตัวอย่าง "ภาพรวมที่กรองแล้ว" คุณจะเห็นสคริปต์ปรากฏขึ้นในคอนโซลกลาง กดปุ่มเรียกใช้เพื่อเรียกใช้สคริปต์ ตัวอย่างภาพคอมโพสิตที่กรองจะเลือกภาพ Landsat 7 ที่ตัดกันหรืออยู่ภายในเขตแดนของโคโลราโดและยูทาห์ จากนั้นจะแสดงภาพคอมโพสิตสีจริงของรูปภาพที่เลือก ตัวอย่างจะแนะนำวิธีการที่ใช้กันโดยทั่วไป เช่น filter(), clip() และ Map.addLayer()

โครงสร้างข้อมูล Earth Engine

โครงสร้างข้อมูลทางภูมิศาสตร์พื้นฐานที่สุด 2 รายการใน Earth Engine คือ Image และ Feature ซึ่งสอดคล้องกับประเภทข้อมูลแรสเตอร์และเวกเตอร์ตามลำดับ รูปภาพประกอบด้วยแถบต่างๆ และพจนานุกรมของพร็อพเพอร์ตี้ ฟีเจอร์ประกอบด้วย Geometry และพจนานุกรมของพร็อพเพอร์ตี้ ImageCollection จะจัดการกองรูปภาพ (เช่น อนุกรมเวลารูปภาพ) FeatureCollection จะจัดการคอลเล็กชันฟีเจอร์ โครงสร้างข้อมูลพื้นฐานอื่นๆ ใน Earth Engine ได้แก่ Dictionary, List, Array, Date, Number และ String (ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทข้อมูลพื้นฐานได้จากบทแนะนำนี้ โปรดทราบว่าออบเจ็กต์เหล่านี้ทั้งหมดเป็นออบเจ็กต์ฝั่งเซิร์ฟเวอร์และจะไม่ได้รับการดัดแปลงในลักษณะเดียวกับออบเจ็กต์ JavaScript ฝั่งไคลเอ็นต์ (ดูข้อมูลเพิ่มเติม)

อัลกอริทึมของ Earth Engine

การดำเนินการใน API ทำได้หลายวิธีดังนี้

  • การเรียกใช้เมธอดที่แนบอยู่กับออบเจ็กต์
  • การเรียกใช้อัลกอริทึม
  • การเรียกใช้ฟังก์ชันเฉพาะของตัวแก้ไขโค้ด
  • การกําหนดฟังก์ชันใหม่

แท็บเอกสารของเครื่องมือแก้ไขโค้ดจะแสดงเมธอดของคลาส API แต่ละคลาส เช่น คลาส Image มีเมธอด add()

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

var image3 = image1.add(image2);

วิธีนี้จะเพิ่มวงดนตรีของ image2 ลงในวงดนตรีของ image1 หมวดหมู่ ee.Algorithms มีรายการอัลกอริทึมที่รองรับในปัจจุบันสำหรับการประมวลผลเฉพาะทางหรือเฉพาะโดเมน เช่น หากต้องการสร้างเลเยอร์ภูมิประเทศจากโมเดลความสูงเชิงตัวเลข (DEM) อินพุต ให้ทำดังนี้

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

var terrainImage = ee.Algorithms.Terrain(dem);

ฟังก์ชันเฉพาะของเครื่องมือแก้ไขโค้ด ได้แก่ Map และ Export ซึ่งควบคุมวิธีเพิ่มเลเยอร์ลงในแผงแผนที่หรือส่งออกไปยัง Google ไดรฟ์ ตามลำดับ คุณยังสร้างฟังก์ชันใน JavaScript โดยใช้

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

var myFunction = function(args) {
  // do something
  return something;
};

ดังที่แสดงในส่วนการแมป ฟังก์ชันที่ผู้ใช้กำหนดมีประโยชน์ในการสร้างฟังก์ชันการทำงานที่กำหนดเองหรือแก้ไของค์ประกอบของคอลเล็กชันโดยใช้สิ่งต่อไปนี้

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

var collection2 = collection1.map(aFunction);

ส่วนต่อไปนี้แสดงแนวคิดเหล่านี้สําหรับ Use Case ง่ายๆ ต่างๆ

'Hello world!' JavaScript

การพิมพ์ข้อมูลไปยังคอนโซลเป็นงานพื้นฐานสำหรับการรับข้อมูลเกี่ยวกับออบเจ็กต์ การแสดงผลลัพธ์ตัวเลขของการคำนวณ การแสดงข้อมูลเมตาของออบเจ็กต์ หรือช่วยแก้ไขข้อบกพร่อง ตัวอย่าง "Hello World" อันโด่งดังในเครื่องมือแก้ไขโค้ดมีดังนี้

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

print('Hello world!');

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

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

print(ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'));

ตรวจสอบเอาต์พุตในคอนโซลอย่างละเอียดเพื่อดูข้อมูลเมตาที่มีให้สำหรับภาพ Landsat

การเพิ่มข้อมูลลงในแผนที่

นอกจากการพิมพ์ข้อมูลไปยังคอนโซลแล้ว การเพิ่มข้อมูลลงใน Map ยังเป็นการนําเสนอข้อมูลทางภูมิศาสตร์เป็นภาพ ใช้ Map.addLayer() ในตัวอย่างต่อไปนี้ ระบบจะสร้างอินสแตนซ์ Image (วิธีค้นหารูปภาพเหล่านี้จะอธิบายในภายหลัง) โดยใช้ ee.Image() เพิ่มลงในแผนที่ด้วย Map.addLayer() และวางแผนที่ไว้ตรงกลางรูปภาพ

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

// Load an image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Center the map on the image.
Map.centerObject(image, 9);

// Display the image.
Map.addLayer(image);

พารามิเตอร์ที่ 2 ของ Map.centerObject() คือระดับการซูม โดยตัวเลขที่สูงขึ้นจะหมายถึงสเกลที่ใหญ่ขึ้น (ซูมเข้ามากขึ้น) พารามิเตอร์สําหรับฟังก์ชัน Map มีคำอธิบายอย่างละเอียดในเอกสารอ้างอิง API ที่เข้าถึงได้จากแท็บเอกสาร หากรูปภาพไม่ตรงกับที่ต้องการ ให้กําหนดค่าพารามิเตอร์การแสดงผลด้วยอาร์กิวเมนต์เพิ่มเติมใน Map.addLayer() เช่น

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

// Load the image from the archive.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Define visualization parameters in an object literal.
var vizParams = {bands: ['B5', 'B4', 'B3'], min: 0.02, max: 0.4, gamma: 1.3};

// Center the map on the image and display.
Map.centerObject(image, 9);
Map.addLayer(image, vizParams, 'Landsat 8 false color');

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

ใช้ Map.addLayer() เพื่อเพิ่มองค์ประกอบและคอลเล็กชันองค์ประกอบลงในแผนที่ เช่น

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

var counties = ee.FeatureCollection('TIGER/2018/Counties');
Map.addLayer(counties, {}, 'counties');

การค้นหารูปภาพ คอลเล็กชันรูปภาพ และคอลเล็กชันองค์ประกอบ

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

หรือจะคัดลอกรหัสคอลเล็กชันแล้ววางลงในโค้ดก็ได้ ตัวอย่างเช่น เลือกผลลัพธ์ TOA ระดับ 1 ของการค้นหา "Landsat 8" แล้วคัดลอกรหัสดังต่อไปนี้

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

var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

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

รายงานชุดองค์ประกอบยังดูผ่านแคตตาล็อกข้อมูลได้ด้วย การแสดงภาพมีขนาดเล็กกว่าคอลเล็กชันรูปภาพ แต่คุณจะเห็นขอบเขตระหว่างประเทศ สำมะโนประชากร ลุ่มน้ำ และพื้นที่คุ้มครอง เป็นต้น ดูข้อมูลเพิ่มเติมเกี่ยวกับการนําเข้าชุดข้อมูลเวกเตอร์ของคุณเองได้ที่นี่

การกรองและการจัดเรียง

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

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

var point = ee.Geometry.Point(-122.262, 37.8719);

สร้างวันที่เริ่มต้นและวันที่สิ้นสุด

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

var start = ee.Date('2014-06-01');
var finish = ee.Date('2014-10-01');

กรองคอลเล็กชัน Landsat 8 โดยใช้จุดและวันที่ จากนั้นจัดเรียงโดยใช้พร็อพเพอร์ตี้ข้อมูลเมตา (ค้นพบระหว่างการตรวจสอบข้อมูลเมตาของภาพ Landsat 8) ดังนี้

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

var filteredCollection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(point)
  .filterDate(start, finish)
  .sort('CLOUD_COVER', true);

คุณสามารถพิมพ์และตรวจสอบคอลเล็กชันนี้ได้อย่างปลอดภัย (หากคอลเล็กชันมีรูปภาพมากเกินไป การพิมพ์จะช้ามาก หมดเวลา หรือแสดงข้อผิดพลาด) โปรดทราบว่ารูปภาพในคอลเล็กชันคือ List ที่เก็บไว้ในพร็อพเพอร์ตี้ "features" ของ ImageCollection คุณสามารถคัดลอกรหัสของรูปภาพในคอลเล็กชันลงในตัวสร้าง Image ดังด้านบน หรือรับภาพแรก (ชั้นเมฆต่ำที่สุด) ดังนี้

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

var first = filteredCollection.first();

เข้าถึงฟังก์ชันการกรอง Earth Engine ทั้งหมดโดยใช้ filter() โดยให้ ee.Filter เป็นอาร์กิวเมนต์ (วิธีการ filterBounds() และ filterDate() ที่ระบุไว้ด้านบนเป็นแป้นพิมพ์ลัด) ตัวอย่างเช่น คำสั่งต่อไปนี้จะสร้าง Filter ใช้ Filter เพื่อกรอง FeatureCollection และแสดงผลลัพธ์

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

// Load a feature collection.
var featureCollection = ee.FeatureCollection('TIGER/2016/States');

// Filter the collection.
var filteredFC = featureCollection.filter(ee.Filter.eq('NAME', 'California'));

// Display the collection.
Map.setCenter(-119.604, 37.798, 6);
Map.addLayer(filteredFC, {}, 'California');

คณิตศาสตร์ของย่านความถี่

ดำเนินการทางคณิตศาสตร์กับรูปภาพโดยใช้เมธอด Image ซึ่งอาจรวมถึงการรวมแถบ (ดัชนีสเปกตรัม) ความแตกต่างของรูปภาพ หรือการดำเนินการทางคณิตศาสตร์ เช่น การคูณด้วยค่าคงที่ เช่น คํานวณความแตกต่างระหว่างภาพดัชนีความแตกต่างของพืช (NDVI) ที่ห่างกัน 20 ปี

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

// This function gets NDVI from Landsat 5 imagery.
var getNDVI = function(image) {
  return image.normalizedDifference(['B4', 'B3']);
};

// Load two Landsat 5 images, 20 years apart.
var image1 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_19900604');
var image2 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_20100611');

// Compute NDVI from the scenes.
var ndvi1 = getNDVI(image1);
var ndvi2 = getNDVI(image2);

// Compute the difference in NDVI.
var ndviDifference = ndvi2.subtract(ndvi1);

โปรดสังเกตการใช้ function ที่ผู้ใช้กําหนดในตัวอย่างนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันในส่วนถัดไป

การแมป (สิ่งที่ควรทำแทนการใช้วงวน for)

ใช้ map() เพื่อวนซ้ำรายการในคอลเล็กชัน (For loop ไม่ใช่วิธีที่ถูกต้องในการดำเนินการดังกล่าวใน Earth Engine และควรหลีกเลี่ยง) ฟังก์ชัน map() ใช้กับ ImageCollection, FeatureCollection หรือ List ได้ และรับ function เป็นอาร์กิวเมนต์ อาร์กิวเมนต์ของฟังก์ชันคือองค์ประกอบของคอลเล็กชันที่มีการแมป ซึ่งมีประโยชน์สำหรับการแก้ไของค์ประกอบทุกรายการของคอลเล็กชันในลักษณะเดียวกัน เช่น การเพิ่ม ตัวอย่างเช่น โค้ดต่อไปนี้จะเพิ่มย่านความถี่ NDVI ลงในรูปภาพทุกรูปใน ImageCollection

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

// This function gets NDVI from Landsat 8 imagery.
var addNDVI = function(image) {
  return image.addBands(image.normalizedDifference(['B5', 'B4']));
};

// Load the Landsat 8 TOA data, filter by location and date.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-06-01', '2014-10-01');

// Map the function over the collection.
var ndviCollection = collection.map(addNDVI);

อีกงานหนึ่งที่พบบ่อยคือการเพิ่มพร็อพเพอร์ตี้ใหม่ (หรือ "แอตทริบิวต์" หรือ "ฟิลด์") ลงในองค์ประกอบใน FeatureCollection ในตัวอย่างต่อไปนี้ พร็อพเพอร์ตี้ใหม่คือการคํานวณที่เกี่ยวข้องกับแอตทริบิวต์ที่มีอยู่ 2 รายการ

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

// This function creates a new property that is the sum of two existing properties.
var addField = function(feature) {
  var sum = ee.Number(feature.get('property1')).add(feature.get('property2'));
  return feature.set({'sum': sum});
};

// Create a FeatureCollection from a list of Features.
var features = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point(-122.4536, 37.7403),
    {property1: 100, property2: 100}),
    ee.Feature(ee.Geometry.Point(-118.2294, 34.039),
    {property1: 200, property2: 300}),
]);

// Map the function over the collection.
var featureCollection = features.map(addField);

// Print a selected property of one Feature.
print(featureCollection.first().get('sum'));

// Print the entire FeatureCollection.
print(featureCollection);

โปรดทราบว่าต้องแคสต์เป็น ee.Number เพื่อให้ระบบจดจำค่าพร็อพเพอร์ตี้เป็นตัวเลขเพื่อใช้เมธอด add()) map() สามารถเปลี่ยนประเภทคอลเล็กชันได้ เช่น

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

// This function returns the image centroid as a new Feature.
var getGeom = function(image) {
  return ee.Feature(image.geometry().centroid(), {foo: 1});
};

// Load a Landsat 8 TOA collection.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-06-01', '2014-10-01');

// Map the function over the ImageCollection.
var featureCollection = ee.FeatureCollection(collection.map(getGeom));

// Print the collection.
print(featureCollection);

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

ลด

การลดขนาดเป็นวิธีรวบรวมข้อมูลตามช่วงเวลา พื้นที่ แถบ อาร์เรย์ และโครงสร้างข้อมูลอื่นๆ ใน Earth Engine API มีวิธีการต่างๆ สำหรับวัตถุประสงค์นี้ เช่น หากต้องการสร้างภาพคอมโพสิตของ ImageCollection ให้ใช้ reduce() เพื่อลดจำนวนรูปภาพในคอลเล็กชันให้เหลือเพียงรูปเดียว ตัวอย่างง่ายๆ คือการสร้างภาพคอมโพสิตค่ามัธยฐานของภาพที่มีเมฆน้อยที่สุด 5 ภาพในคอลเล็กชัน Landsat 8 ที่ระบุไว้ก่อนหน้านี้

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

// Load a Landsat 8 TOA collection.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  // Filter by date and location.
  .filterBounds(ee.Geometry.Point(-122.262, 37.8719))
  .filterDate('2014-01-01', '2014-12-31')
  // Sort by increasing cloudiness.
  .sort('CLOUD_COVER');

// Compute the median of each pixel for each band of the 5 least cloudy scenes.
var median = collection.limit(5).reduce(ee.Reducer.median());

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

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

// Load and display a Landsat TOA image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.3});

// Create an arbitrary rectangle as a region and display it.
var region = ee.Geometry.Rectangle(-122.2806, 37.1209, -122.0554, 37.2413);
Map.addLayer(region);

// Get a dictionary of means in the region.  Keys are bandnames.
var mean = image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: region,
  scale: 30
});

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวลดจากเอกสารตัวลด

การมาสก์

พิกเซลทุกพิกเซลใน ee.Image มีทั้งค่าและหน้ากากซึ่งมีค่าอยู่ในช่วง 0 (ไม่มีข้อมูล) ถึง 1 ระบบจะถือว่าพิกเซลที่มีการมาสก์ (ซึ่ง mask==0) เป็น "ไม่มีข้อมูล" พิกเซลที่มี 0 < มาสก์ ≤ 1 จะมีค่า แต่ระบบจะถ่วงน้ำหนักด้วยมาสก์สําหรับการคํานวณตัวเลข

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

// This function gets NDVI from Landsat 5 imagery.
var getNDVI = function(image) {
  return image.normalizedDifference(['B4', 'B3']);
};

// Load two Landsat 5 images, 20 years apart.
var image1 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_19900604');
var image2 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_20100611');

// Compute NDVI from the scenes.
var ndvi1 = getNDVI(image1);
var ndvi2 = getNDVI(image2);

// Compute the difference in NDVI.
var ndviDifference = ndvi2.subtract(ndvi1);
// Load the land mask from the SRTM DEM.
var landMask = ee.Image('CGIAR/SRTM90_V4').mask();

// Update the NDVI difference mask with the land mask.
var maskedDifference = ndviDifference.updateMask(landMask);

// Display the masked result.
var vizParams = {min: -0.5, max: 0.5, palette: ['FF0000', 'FFFFFF', '0000FF']};
Map.setCenter(-122.2531, 37.6295, 9);
Map.addLayer(maskedDifference, vizParams, 'NDVI difference');

ในตัวอย่างนี้ โปรดทราบว่ามาสก์ของความแตกต่างของ NDVI ได้รับการอัปเดตโดยมาสก์ที่ดินที่มี updateMask() ซึ่งจะตั้งค่ามาสก์ของพิกเซลความแตกต่าง NDVI เป็นมาสก์ที่ดินเมื่อใดก็ตามที่มาสก์ความแตกต่าง NDVI ไม่ใช่ 0

การมาสก์ยังมีประโยชน์ในการยกเว้นข้อมูลจากการวิเคราะห์ด้วย ลองดูตัวอย่าง reduceRegion() จากส่วนการลด สมมติว่างานคือการคำนวณ NDVI เฉลี่ยตามฤดูกาลสำหรับซานตาแคลราเคาน์ตี รัฐแคลิฟอร์เนีย โดยยกเว้นพิกเซลที่มีเมฆ ตัวอย่างต่อไปนี้แสดงแนวคิดหลายอย่าง ได้แก่ การกรอง การแมป การลด และการใช้มาสก์เมฆ

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

// This function gets NDVI from a Landsat 8 image.
var addNDVI = function(image) {
  return image.addBands(image.normalizedDifference(['B5', 'B4']));
};

// This function masks cloudy pixels.
var cloudMask = function(image) {
  var clouds = ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud']);
  return image.updateMask(clouds.lt(10));
};

// Load a Landsat collection, map the NDVI and cloud masking functions over it.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
  .filterBounds(ee.Geometry.Point([-122.262, 37.8719]))
  .filterDate('2014-03-01', '2014-05-31')
  .map(addNDVI)
  .map(cloudMask);

// Reduce the collection to the mean of each pixel and display.
var meanImage = collection.reduce(ee.Reducer.mean());
var vizParams = {bands: ['B5_mean', 'B4_mean', 'B3_mean'], min: 0.02, max: 0.4};
Map.addLayer(meanImage, vizParams, 'mean');

// Load a region in which to compute the mean and display it.
var counties = ee.FeatureCollection('TIGER/2018/Counties');
var santaClara = ee.Feature(counties.filter(ee.Filter.eq('NAME', 'Santa Clara')).first());
Map.addLayer(santaClara);

// Get the mean of NDVI in the region.
var mean = meanImage.select(['nd_mean']).reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: santaClara.geometry(),
  scale: 30
});

// Print mean NDVI for the region.
mean.get('nd_mean').evaluate(function(val){
  print('Santa Clara spring mean NDVI:', val);
});