Eksportowanie obrazów

Obrazy z Earth Engine możesz eksportować w formacie GeoTIFF lub TFRecord. Więcej opcji wyjściowych znajdziesz w sekcji Parametry konfiguracji.

Konfiguracja przykładowa

Najpierw określ dane obrazu, które mają zostać wyeksportowane:

Edytor kodu (JavaScript)

// Load a landsat image and select three bands.
var landsat = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_123032_20140515')
  .select(['B4', 'B3', 'B2']);

// Create a geometry representing an export region.
var geometry = ee.Geometry.Rectangle([116.2621, 39.8412, 116.4849, 40.01236]);

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)

# Load a landsat image and select three bands.
landsat = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_123032_20140515').select(
    ['B4', 'B3', 'B2']
)

# Create a geometry representing an export region.
geometry = ee.Geometry.Rectangle([116.2621, 39.8412, 116.4849, 40.01236])

Następnie określ parametry projekcji, które będą używane w następnych eksportach. Parametr crs służy do określania układu współrzędnych, a parametr crsTransform – do dokładnego określania siatki pikseli. Parametr crsTransform to lista parametrów z macierzy przekształcenia afinicznego w kolejności wierszowej [xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. Początek obrazu jest zdefiniowany przez wartości xTranslation i yTranslation, a rozmiar obrazu w pikselach jest zdefiniowany przez wartości xScale i yScale. Zobacz przykłady macierzy afinicznych.

Edytor kodu (JavaScript)

// Retrieve the projection information from a band of the original image.
// Call getInfo() on the projection to request a client-side object containing
// the crs and transform information needed for the client-side Export function.
var projection = landsat.select('B2').projection().getInfo();

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)

# Retrieve the projection information from a band of the original image.
# Call getInfo() on the projection to request a client-side object containing
# the crs and transform information needed for the client-side Export function.
projection = landsat.select('B2').projection().getInfo()

Ustawiam scale

Jako skrót możesz podać parametr scale, a Earth Engine obliczy dla Ciebie parametr crsTransform. Jednak samo ustawienie skali obrazu nie określa punktu wyjścia projekcji i może spowodować przesunięcie obrazu względem innego obrazu o tym samym rozmiarze pikseli.

Przyczyną potencjalnego przesunięcia jest to, że parametr scale służy do wypełniania wartości xScaleyScale atrybutu crsTransform, ale wartości xTranslationyTranslation są obliczane w taki sposób, że po podzieleniu przez odpowiadające im wartości xScaleyScale reszta wynosi 0. Te parametry określają siatkę pikseli, w której początek układu jest zlokalizowany w rogu piksela. Ta konwencja różni się od parametrów przekształcenia używanych przez niektórych dostawców danych, którzy korzystają z kratek przesuniętych względem początku układu. Na przykład obrazy Landsat udostępniane przez USGS używają parametrów przekształcenia, które są przesunięte o 1/2 piksel od punktu początkowego projekcji (15 m w przypadku pasm 30 m), podczas gdy obrazy Sentinel-2 udostępniane przez ESA używają parametrów przekształcenia, które są dopasowane do punktu początkowego projekcji. Jeśli crsTransform określone w pliku eksportowanym nie pasują do crsTransform oryginalnego obrazu, piksele wyjściowe zostaną ponownie próbkowane (domyślnie za pomocą metody najbliższych sąsiadów), co spowoduje przesunięcie obrazu wynikowego względem oryginalnego.

Podsumowując, jeśli chcesz dopasować piksele wyeksportowanego obrazu do konkretnego obrazu, użyj parametrów crscrsTransform, aby uzyskać pełną kontrolę nad siatką.

na Dysk.

Aby wyeksportować obraz na konto Dysku, użyj Export.image.toDrive(). Na przykład, aby wyeksportować fragmenty obrazu Landsat, określ region do wyeksportowania, a następnie wywołaj funkcję Export.image.toDrive():

Edytor kodu (JavaScript)

// Export the image, specifying the CRS, transform, and region.
Export.image.toDrive({
  image: landsat,
  description: 'imageToDriveExample_transform',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry
});

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)

# Export the image, specifying the CRS, transform, and region.
task = ee.batch.Export.image.toDrive(
    image=landsat,
    description='imageToDriveExample_transform',
    crs=projection['crs'],
    crsTransform=projection['transform'],
    region=geometry,
)
task.start()

Gdy ten kod zostanie uruchomiony, w Edytorze kodu na karcie Zadania zostanie utworzone zadanie eksportowania. Aby rozpocząć zadanie, kliknij obok niego przycisk Uruchom. (więcej informacji o Menedżerze zadań znajdziesz w sekcji Edytor kodu). Obraz zostanie utworzony na Twoim koncie Dysku z określonym fileFormat.

do Cloud Storage

Aby wyeksportować obraz do zasobnika Google Cloud Storage, użyj Export.image.toCloudStorage(). Aby wyeksportować obraz Landsat z poprzedniego przykładu do Cloud Storage zamiast na Dysk, użyj:

Edytor kodu (JavaScript)

// Export the image to Cloud Storage.
Export.image.toCloudStorage({
  image: landsat,
  description: 'imageToCloudExample',
  bucket: 'your-bucket-name',
  fileNamePrefix: 'exampleExport',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry
});

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)

# Export the image to Cloud Storage.
task = ee.batch.Export.image.toCloudStorage(
    image=landsat,
    description='imageToCloudExample',
    bucket='your-bucket-name',
    fileNamePrefix='exampleExport',
    crs=projection['crs'],
    crsTransform=projection['transform'],
    region=geometry,
)
task.start()

Podobnie jak w przypadku eksportu na Dysk, eksportowanie rozpocznij na karcie Lista zadań. Lokalizacja zasobnika Cloud Storage może mieć wpływ na wydajność i koszty przechowywania. Więcej informacji znajdziesz w artykule z odpowiedziami na najczęstsze pytania na temat lokalizacji.

do komponentu

Aby wyeksportować obraz do komponentu w folderze komponentów Earth Engine, użyj opcji Export.image.toAsset(). Aby zarządzać komponentami Earth Engine lub sprawdzić, ile miejsca na dane jest używane, użyj Menedżera komponentów. Poniższy przykład pokazuje eksportowanie części obrazu Landsat za pomocą różnych zasad piramidy dla tego samego pasma. Zasady tworzenia piramidy określają, jak Earth Engine oblicza wersje zasobu o niższej rozdzielczości. Dowiedz się więcej o tym, jak Earth Engine obsługuje różne rozdzielczości w dokumentacji na temat skalowania.

Edytor kodu (JavaScript)

// Get band 4 from the Landsat image, copy it.
var band4 = landsat.select('B4').rename('b4_mean')
  .addBands(landsat.select('B4').rename('b4_sample'))
  .addBands(landsat.select('B4').rename('b4_max'));

// Export the image to an Earth Engine asset.
Export.image.toAsset({
  image: band4,
  description: 'imageToAssetExample',
  assetId: 'exampleExport',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry,
  pyramidingPolicy: {
    'b4_mean': 'mean',
    'b4_sample': 'sample',
    'b4_max': 'max'
  }
});

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)

# Get band 4 from the Landsat image, copy it.
band_4 = (
    landsat.select('B4')
    .rename('b4_mean')
    .addBands(landsat.select('B4').rename('b4_sample'))
    .addBands(landsat.select('B4').rename('b4_max'))
)

# Export the image to an Earth Engine asset.
task = ee.batch.Export.image.toAsset(
    image=band_4,
    description='imageToAssetExample',
    assetId='projects/your-project/assets/exampleExport',
    crs=projection['crs'],
    crsTransform=projection['transform'],
    region=geometry,
    pyramidingPolicy={
        'b4_mean': 'mean',
        'b4_sample': 'sample',
        'b4_max': 'max',
    },
)
task.start()

Za pomocą klucza '.default' możesz podać domyślną zasadę piramidy dla każdego pasma, które nie zostało określone wprost. Możesz też podać tylko klucz '.default'. Jeśli na przykład chcesz, aby wszystkie pasma domyślnie używały zasady piramidy „sample”, użyj {'.default': 'sample'}.

Parametry konfiguracji

Zwróć uwagę, że słownik parametrów konfiguracji przekazany do funkcji Export.image zawiera scale (w metrach) oraz region eksportu jako ee.Geometry. Wyeksportowany obraz będzie obejmował wskazany obszar za pomocą pikseli o określonej skali. Jeśli nie zostanie wyraźnie określony, CRS danych wyjściowych zostanie pobrany z pierwszego pasma obrazu, który ma zostać wyeksportowany.

Możesz też określić dimensions, crs lub crsTransform wyeksportowanego obrazu. Więcej informacji o  i crsTransform znajdziesz w słowniczku.crs Aby na przykład uzyskać blok pikseli dokładnie dopasowany do innego źródła danych, podaj wartości dimensions, crscrsTransform. Aby uzyskać blok pikseli o wstępnie zdefiniowanym rozmiarze (np. miniaturę 256 × 256), która obejmuje region, określ dimensionsregion.

Parametrem fileFormat (domyślnie 'GeoTIFF') możesz określić format wyjściowy obrazu (jeśli miejsce docelowe nie jest toAsset()).

Parametr formatOptions

Inne opcje konfiguracji są ustawiane za pomocą parametru formatOptions, który powinien być słownikiem z kluczami odpowiadającymi innym opcjom formatu, specyficznym dla każdego parametru fileFormat, jak opisano poniżej.

GeoTIFF

GeoTIFF zoptymalizowany pod kątem chmury

Aby wyeksportować plik GeoTIFF zoptymalizowany pod kątem chmury, prześlij ciągły tekst JavaScriptu formatOptions, w którym klucz cloudOptimized ma wartość true. W dalszym ciągu przykładu z poprzedniego akapitu:

Edytor kodu (JavaScript)

// Export a cloud-optimized GeoTIFF.
Export.image.toDrive({
  image: landsat,
  description: 'imageToCOGeoTiffExample',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry,
  fileFormat: 'GeoTIFF',
  formatOptions: {
    cloudOptimized: true
  }
});

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)

# Export a cloud-optimized GeoTIFF.
task = ee.batch.Export.image.toDrive(
    image=landsat,
    description='imageToCOGeoTiffExample',
    crs=projection['crs'],
    crsTransform=projection['transform'],
    region=geometry,
    fileFormat='GeoTIFF',
    formatOptions={'cloudOptimized': True},
)
task.start()

Pliki GeoTIFF zoptymalizowane pod kątem chmury można ponownie załadować z Cloud Storage do Image. Szczegółowe informacje znajdziesz w dokumentacji Image.

Nodata

Określ wartość nodata w formacie GeoTIFF, używając klucza noData w parametrze formatOptions. Na przykład:

Edytor kodu (JavaScript)

// Set a nodata value and replace masked pixels around the image edge with it.
var noDataVal = -9999;
landsat = landsat.unmask(noDataVal);

Export.image.toDrive({
  image: landsat,
  description: 'imageNoDataExample',
  crs: projection.crs,
  scale: 2000,  // large scale for minimal demo
  region: landsat.geometry(),  // full image bounds
  fileFormat: 'GeoTIFF',
  formatOptions: {
    noData: noDataVal,
  }
});

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)

# Set a nodata value and replace masked pixels around the image edge with it.
no_data_val = -9999
landsat = landsat.unmask(no_data_val)

task = ee.batch.Export.image.toDrive(
    image=landsat,
    description='imageNoDataExample',
    crs=projection['crs'],
    scale=2000,  # large scale for minimal demo
    region=landsat.geometry(),  # full image bounds
    fileFormat='GeoTIFF',
    formatOptions={'noData': no_data_val},
)
task.start()

Pamiętaj, że wartość nodata powinna mieścić się w prawidłowym zakresie parametru PixelType obrazu. Wartość PixelType możesz sprawdzić, wydrukowując metadane obrazu i sprawdzając właściwość data_type pierwszego pasma. Możesz też ustawić wartość parametruPixelType, zamieniając dane na określony typ za pomocą metod obrazów toShort() lub toInt().

TFRecord

Zapoznaj się ze stroną Format danych TFRecord.

maxPixels

Parametr maxPixels ma zapobiegać przypadkowemu tworzeniu bardzo dużych plików eksportu. Jeśli domyślna wartość jest za niska dla obrazu wyjściowego, możesz zwiększyć maxPixels. Na przykład:

Export.image.toDrive({
  image: landsat,
  description: 'maxPixelsExample',
  crs: projection.crs,
  crsTransform: projection.transform,
  region: geometry,
  maxPixels: 1e9
});

Eksportowanie dużych plików

Jeśli obraz wyjściowy jest duży, zostanie wyeksportowany jako kilka plików. Jeśli eksportujesz do formatu GeoTIFF, obraz zostanie podzielony na elementy. Nazwa pliku każdej płytki będzie mieć postać baseFilename-yMin-xMin, gdzie xMinyMin to współrzędne każdej płytki w ogólnym ograniczonym obszarze eksportowanego obrazu.

Jeśli eksportujesz do formatu TFRecord, do plików zostanie dołączony -00000, -00001,… -0000N dla N+1 plików. Zachowanie tej kolejności jest ważne, jeśli chcesz przeprowadzić wnioskowanie na podstawie plików i przesłać prognozy z powrotem do Earth Engine jako obraz. Więcej informacji znajdziesz w artykule Przesyłanie obrazów jako plików TFRecord.

Eksportowanie obrazów w takiej samej orientacji jak w Edytorze kodu

Aby wyeksportować obrazy wyrenderowane na ekranie w Earth Engine, utwórz wizualizacje zdjęć zgodnie z instrukcjami w sekcjach Wizualizacja zdjęćZłożenie i mozaikowanie. Ponieważ Edytor kodu korzysta z układu współrzędnych geograficznych 'EPSG:3857', podczas eksportowania podaj ten sam układ współrzędnych, czyli 'EPSG:3857', aby uzyskać obraz w tej samej projekcji co mapa w Edytorze kodu. Szczegółowe informacje o określaniu rozdzielczości i systemu współrzędnych wyjścia znajdziesz w sekcji dotyczącej konfigurowania eksportu obrazów.