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]);
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();
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 xScale
i yScale
atrybutu crsTransform
, ale wartości xTranslation
i yTranslation
są obliczane w taki sposób, że po podzieleniu przez odpowiadające im wartości xScale
i yScale
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 crs
i crsTransform
, 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 });
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 });
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' } });
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
, crs
i crsTransform
.
Aby uzyskać blok pikseli o wstępnie zdefiniowanym rozmiarze (np. miniaturę 256 × 256), która obejmuje region, określ dimensions
i region
.
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 } });
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, } });
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 xMin
i yMin
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ęć i 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.