Skaluj

Zrozumienie sposobu, w jaki Earth Engine obsługuje skalę, jest kluczowe dla interpretacji wyników naukowych uzyskanych za pomocą Earth Engine. W tym przypadku skala oznacza rozdzielczość pikseli. W odróżnieniu od innych systemów GIS i platform do przetwarzania obrazów skala analizy jest określana na podstawie danych wyjściowych, a nie wejściowych. Gdy na przykład wysyłasz żądanie dotyczące wyników, obrazu do wyświetlenia lub statystyk, określasz skalę, w jakiej dane są podawane do analizy. Rysunek 1 przedstawia tę koncepcję.

piramidy
Rysunek 1. Przykładowe przedstawienie zbioru danych z obrazami w Earth Engine. Linie przerywane wskazują zasadę piramidy w przypadku agregowania bloków 2 x 2 o wymiarach 4 piksele. Earth Engine używa skali określonej przez dane wyjściowe, aby określić odpowiedni poziom piramidy obrazów, który ma być użyty jako dane wejściowe.

Piramidy obrazów

Zasoby graficzne w Earth Engine występują w różnych skalach w piramidach obrazów. Zasady piramidy (przedstawione przerywanymi liniami na rysunku 1) określają, jak każdy piksel na danym poziomie piramidy jest obliczany na podstawie agregacji bloku 2 x 2 pikseli na niższym poziomie. W przypadku obrazów o wartościach ciągłych wartości pikseli na wyższych poziomach piramidy są średnią wartości pikseli na niższym poziomie. W przypadku obrazów o wartościach dyskretnych wartości pikseli na wyższych poziomach piramidy są próbką (zwykle lewy górny róg) pikseli na niższym poziomie.

Najniższy poziom piramidy obrazów reprezentuje dane obrazu w pierwotnej rozdzielczości, gdy są one przetwarzane w Earth Engine. Podczas przetwarzania dane są agregowane (zgodnie z zasadami piramidy) w celu utworzenia wyższych poziomów piramidy. Dane są agregowane, dopóki cały obraz nie zmieści się w płytce o wymiarach 256 x 256 pikseli. Gdy używasz obrazu w kodze, Earth Engine wybiera poziom piramidy o najbliższej skali mniejszej lub równej skali określonej przez analizę i w razie potrzeby ponownie próbkuje (domyślnie za pomocą metody najbliższych sąsiadów).

Skala analizy

Skala analizy w Earth Engine jest określana na podstawie „ściągania”. Skala, w jakiej dane wejściowe są przesyłane do obliczeń, jest określana na podstawie danych wyjściowych. Jeśli na przykład dodasz obraz do Edytora kodu lub elementu mapy geemap, poziom powiększenia mapy określa skalę, w której dane wejściowe są pobierane z piramidy obrazów. W przypadku innych obliczeń jako argument podajesz scale. Na przykład przy użyciu pasma NIR obrazu Landsat, który ma rozdzielczość natywnych 30 metrów:

Edytor kodu (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

Konfiguracja Pythona

Informacje o interfejsie Python API i o używaniu pakietu geemap do programowania interaktywnego znajdziesz na stronie Python Environment.

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

W tym przykładzie zwróć uwagę, że wartość piksela w stałym położeniu (centroid obrazów) zmienia się w zależności od skali. Wynika to z faktu, że w przypadku różnych skal wybierane są różne poziomy piramidy. W przypadku podobnych skal próbkowanie z najbliższego sąsiada powoduje zwrócenie tej samej wartości piksela. Ważne jest, że w zależności od skali żądane są różne dane wejściowe obrazu.

Gdy wizualizujesz obraz, dodając go do mapy, Earth Engine określa skalę na podstawie poziomu powiększenia. Rozważ ten prosty przykład, który wyświetla obraz Landsat:

Edytor kodu (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');

Konfiguracja Pythona

Informacje o interfejsie Python API i o używaniu pakietu geemap do programowania interaktywnego znajdziesz na stronie Python Environment.

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

Mapa zaczyna się od maksymalnego powiększenia, aby piksele w natywnej rozdzielczości były wyraźnie widoczne. Powiększenie obrazu nie spowoduje wyświetlenia tych samych pikseli, ale wyższe poziomy piramidy obrazu. Warto też pamiętać, że mapy w Edytorze kodu i w geemap używają projekcji Mercator (EPSG:3857), więc przed wyświetleniem należy ponownie przeprojektować odpowiedni poziom piramidy obrazów. Dowiedz się więcej o tym, jak Earth Engine obsługuje projekcje z tego dokumentu.