Skalakan

Memahami cara Earth Engine menangani skala sangat penting untuk menafsirkan hasil ilmiah yang diperoleh dari Earth Engine. Di sini, skala berarti resolusi piksel. Tidak seperti platform GIS dan pemrosesan gambar lainnya, skala analisis ditentukan dari output, bukan input. Secara khusus, saat Anda membuat permintaan untuk hasil, gambar yang akan ditampilkan, atau statistik, misalnya, Anda menentukan skala input data ke analisis. Konsep ini diilustrasikan dalam Gambar 1.

piramida
Gambar 1. Representasi grafis set data gambar di Earth Engine. Garis putus-putus mewakili kebijakan piramida untuk menggabungkan blok 2x2 dari 4 piksel. Earth Engine menggunakan skala yang ditentukan oleh output untuk menentukan tingkat piramida gambar yang sesuai untuk digunakan sebagai input.

Piramida Gambar

Aset gambar di Earth Engine ada dalam beberapa skala, dalam piramida gambar. Kebijakan piramida (diwakili oleh garis putus-putus pada Gambar 1) menentukan cara setiap piksel pada tingkat piramida tertentu dihitung dari agregasi blok piksel 2x2 di tingkat yang lebih rendah berikutnya. Untuk gambar bernilai kontinu, nilai piksel dari tingkat atas piramida adalah nilai rata-rata piksel di tingkat yang lebih rendah berikutnya. Untuk gambar bernilai diskret, nilai piksel dari tingkat atas piramida adalah sampel (biasanya piksel kiri atas) piksel di tingkat yang lebih rendah berikutnya.

Tingkat terendah piramida gambar mewakili data gambar pada resolusi native, saat ditransfer ke Earth Engine. Selama proses transfer, data digabungkan (sesuai dengan kebijakan piramida) untuk membuat tingkat piramida yang lebih tinggi. Data digabungkan hingga seluruh gambar muat dalam ubin 256x256 piksel. Saat Anda menggunakan gambar dalam kode, Earth Engine memilih tingkat piramida dengan skala terdekat yang kurang dari atau sama dengan skala yang ditentukan oleh analisis Anda dan mengambil sampel ulang (menggunakan tetangga terdekat secara default) sesuai kebutuhan.

Skala analisis

Skala analisis di Earth Engine ditentukan berdasarkan "pull". Skala untuk meminta input ke komputasi ditentukan dari output. Misalnya, jika Anda menambahkan gambar ke Editor Kode atau elemen peta geemap, tingkat zoom peta akan menentukan skala saat input diminta dari piramida gambar. Untuk komputasi lainnya, Anda menentukan scale sebagai argumen. Misalnya, menggunakan band NIR dari gambar Landsat, yang memiliki resolusi native 30 meter:

Editor Kode (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

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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

Dalam contoh ini, perhatikan bahwa nilai piksel di lokasi konstan (centroid gambar) bervariasi berdasarkan skala. Hal ini disebabkan karena berbagai tingkat piramida dipilih untuk skala yang berbeda. Untuk skala yang serupa, pengambilan sampel tetangga terdekat akan menghasilkan nilai piksel yang sama. Hal yang penting adalah dengan memvariasikan skala, input gambar yang berbeda akan diminta.

Saat Anda memvisualisasikan gambar dengan menambahkannya ke peta, Earth Engine akan menentukan skala dari tingkat zoom. Pertimbangkan contoh sederhana berikut, yang hanya menampilkan gambar Landsat:

Editor Kode (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');

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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

Peta mulai diperbesar sepenuhnya, sehingga piksel resolusi native terlihat dengan jelas. Memperkecil cukup jauh tidak akan menampilkan piksel yang sama, tetapi akan menampilkan tingkat piramida gambar yang lebih tinggi. Perlu juga diperhatikan bahwa peta Editor Kode dan peta geemap menggunakan proyeksi maps mercator (EPSG:3857), sehingga tingkat piramida gambar yang sesuai juga perlu diproyeksikan ulang sebelum ditampilkan. Pelajari lebih lanjut cara Earth Engine menangani proyeksi dari dokumen proyeksi.