ปรับขนาด

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

พีระมิด
รูปที่ 1 การนำเสนอชุดข้อมูลรูปภาพในรูปแบบกราฟิกใน Earth Engine เส้นประแสดงนโยบายการซ้อนทับสำหรับการรวมบล็อก 2x2 ขนาด 4 พิกเซล Earth Engine ใช้มาตราส่วนที่ระบุโดยเอาต์พุตเพื่อกำหนดระดับที่เหมาะสมของพีระมิดรูปภาพที่จะใช้เป็นอินพุต

พีระมิดรูปภาพ

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

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

ระดับการวิเคราะห์

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

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

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

var printAtScale = function(scale) {
  print('Pixel value at '+scale+' meters scale',
    image.reduceRegion({
      reducer: ee.Reducer.first(),
      geometry: image.geometry().centroid(),
      // The scale determines the pyramid level from which to pull the input
      scale: scale
  }).get('B4'));
};

printAtScale(10); // 0.10394100844860077
printAtScale(30); // 0.10394100844860077
printAtScale(50); // 0.09130698442459106
printAtScale(70); // 0.1150854229927063
printAtScale(200); // 0.102478988468647
printAtScale(500); // 0.09072770178318024

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4')


def print_at_scale(scale):
  display(
      f'Pixel value at {scale} meters scale',
      image.reduceRegion(
          reducer=ee.Reducer.first(),
          geometry=image.geometry().centroid(),
          # The scale determines the pyramid level from which to pull the input
          scale=scale,
      ).get('B4'),
  )


print_at_scale(10)  # 0.10394100844860077
print_at_scale(30)  # 0.10394100844860077
print_at_scale(50)  # 0.09130698442459106
print_at_scale(70)  # 0.1150854229927063
print_at_scale(200)  # 0.102478988468647
print_at_scale(500)  # 0.09072770178318024

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

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

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

var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');
Map.centerObject(image, 17);
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.35}, 'image');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')
m = geemap.Map()
m.center_object(image, 17)
m.add_layer(image, {'bands': ['B4', 'B3', 'B2'], 'max': 0.35}, 'image')
m

แผนที่จะเริ่มซูมเข้าจนสุดเพื่อให้เห็นพิกเซลความละเอียดระดับต้นฉบับอย่างชัดเจน การซูมออกจนสุดจะไม่แสดงพิกเซลเดิม แต่จะแสดงพีระมิดรูปภาพที่สูงขึ้นแทน นอกจากนี้ โปรดทราบว่าเครื่องมือแก้ไขโค้ดและแผนที่ geemap ใช้การโปรเจ็กต์ maps mercator (EPSG:3857) ดังนั้นจึงต้องโปรเจ็กต์พีระมิดรูปภาพในระดับที่เหมาะสมอีกครั้งก่อนแสดง ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Earth Engine จัดการการฉายภาพจากเอกสารการฉายภาพ