Bạn có thể xuất hình ảnh từ Earth Engine ở định dạng GeoTIFF hoặc TFRecord format. Hãy xem phần Tham số cấu hình để biết thêm các lựa chọn đầu ra.
Thiết lập mẫu
Bắt đầu bằng cách xác định dữ liệu hình ảnh sẽ được xuất:
Trình soạn thảo mã (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])
Tiếp theo, hãy xác định các tham số chiếu sẽ được sử dụng trong các lệnh xuất
sau. Chúng tôi sử dụng tham số crs để chỉ định hệ toạ độ,
và tham số crsTransform để chỉ định chính xác lưới pixel. Tham số
crsTransform là một danh sách các tham số từ ma trận biến đổi affine
theo thứ tự hàng chính
[xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. Nguồn gốc của hình ảnh được xác định bằng các giá trị xTranslation và yTranslation, còn kích thước pixel của hình ảnh được xác định bằng các giá trị xScale và yScale. Xem
các ví dụ về ma trận affine.
Trình soạn thảo mã (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()
Thiết lập scale
Để làm lối tắt, bạn có thể chỉ định tham số scale và Earth Engine sẽ tính toán tham số crsTransform cho bạn. Tuy nhiên, việc chỉ thiết lập tỷ lệ của hình ảnh sẽ không chỉ định nguồn gốc của phép chiếu và có thể dẫn đến hình ảnh bị dịch chuyển so với một hình ảnh khác có cùng kích thước pixel!
Lý do có thể xảy ra sự dịch chuyển là vì tham số scale được dùng để điền các giá trị xScale và yScale của crsTransform, nhưng các giá trị xTranslation và yTranslation được tính toán sao cho nếu chúng được chia cho các giá trị xScale và yScale tương ứng thì phần dư sẽ bằng 0. Các tham số này chỉ định một lưới pixel trong đó nguồn gốc của phép chiếu nằm ở góc của một pixel. Quy ước này khác với các tham số dịch chuyển được một số nhà cung cấp dữ liệu sử dụng, trong đó sử dụng các lưới bị lệch so với nguồn gốc của phép chiếu. Ví dụ: hình ảnh Landsat do USGS cung cấp sử dụng các tham số dịch chuyển bị lệch 1/2 pixel so với nguồn gốc của phép chiếu (độ lệch 15m đối với các dải tần 30m), trong khi hình ảnh Sentinel-2 do ESA cung cấp sử dụng các tham số dịch chuyển được căn chỉnh với nguồn gốc của phép chiếu. Nếu crsTransform được chỉ định trong một lệnh xuất không khớp với crsTransform của hình ảnh gốc, thì các pixel đầu ra sẽ được lấy mẫu lại (theo mặc định là sử dụng phương pháp láng giềng gần nhất), điều này sẽ khiến hình ảnh kết quả bị dịch chuyển so với hình ảnh gốc.
Tóm lại, nếu bạn cần khớp các pixel của hình ảnh đã xuất với một hình ảnh cụ thể
hãy nhớ sử dụng các tham số crs và crsTransform để kiểm soát hoàn toàn
lưới.
sang Drive
Để xuất hình ảnh sang tài khoản Drive, hãy sử dụng Export.image.toDrive(). Ví dụ: để xuất một phần của hình ảnh Landsat, hãy xác định một khu vực cần xuất, sau đó gọi Export.image.toDrive():
Trình soạn thảo mã (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()
Khi mã này được chạy, một tác vụ xuất sẽ được tạo trong thẻ Tasks (Tác vụ) của Trình soạn thảo mã. Nhấp vào nút Run (Chạy) bên cạnh tác vụ để bắt đầu tác vụ đó. (Tìm hiểu
thêm về Trình quản lý tác vụ trong phần Trình soạn thảo mã
section). Hình ảnh sẽ được tạo trong tài khoản Drive của bạn với fileFormat đã chỉ định.
sang Cloud Storage
Để xuất hình ảnh sang bộ chứa Google Cloud Storage, hãy sử dụng Export.image.toCloudStorage(). Để xuất hình ảnh Landsat trong ví dụ trước sang Cloud Storage thay vì Drive, hãy sử dụng:
Trình soạn thảo mã (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()
Giống như các lệnh xuất sang Drive, hãy bắt đầu lệnh xuất từ thẻ Tasks (Tác vụ). Vị trí của bộ chứa Cloud Storage có thể ảnh hưởng đến hiệu suất và chi phí lưu trữ. Hãy xem mục Câu hỏi thường gặp về các yếu tố cần cân nhắc về vị trí để biết thêm thông tin.
sang Thành phần
Để xuất hình ảnh sang một thành phần trong thư mục thành phần Earth Engine, hãy sử dụng Export.image.toAsset(). Để quản lý các thành phần Earth Engine hoặc kiểm tra mức sử dụng
hạn mức bộ nhớ, hãy sử dụng Trình quản lý thành phần. Ví dụ sau đây minh hoạ việc xuất một phần của hình ảnh Landsat bằng cách sử dụng các chính sách phân cấp khác nhau cho cùng một dải tần. Chính sách phân cấp cho biết cách Earth Engine tính toán các phiên bản có độ phân giải thấp hơn của thành phần. Tìm hiểu thêm
về cách Earth Engine xử lý nhiều độ phân giải trong tài liệu về tỷ lệ.
Trình soạn thảo mã (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()
Bạn có thể cung cấp chính sách phân cấp mặc định cho mọi dải tần không được
chỉ định rõ ràng bằng cách sử dụng khoá '.default'. Bạn cũng có thể chỉ truyền
khoá '.default'. Ví dụ: để đặt tất cả các dải tần thành chính sách phân cấp "sample" (mẫu) theo mặc định, hãy sử dụng {'.default': 'sample'}.
Tham số cấu hình
Lưu ý rằng từ điển tham số cấu hình được truyền đến Export.image bao gồm scale (tính bằng mét) và khu vực xuất dưới dạng ee.Geometry. Hình ảnh đã xuất sẽ bao phủ khu vực đã chỉ định với các pixel ở tỷ lệ đã chỉ định. Nếu không được chỉ định rõ ràng, CRS của đầu ra sẽ được lấy từ dải tần đầu tiên của hình ảnh cần xuất.
Bạn cũng có thể chỉ định dimensions, crs và/hoặc crsTransform của
hình ảnh đã xuất. Hãy xem bảng chú giải để biết thêm thông tin
về crs và crsTransform. Ví dụ: để có một khối pixel được căn chỉnh chính xác
với một nguồn dữ liệu khác, hãy chỉ định dimensions, crs và crsTransform.
Để có một khối pixel có kích thước được xác định trước (ví dụ: hình thu nhỏ 256x256) bao phủ một khu vực, hãy chỉ định dimensions và region.
Bạn có thể chỉ định định dạng đầu ra của hình ảnh (nếu đích đến không phải là toAsset()) bằng
tham số fileFormat ('GeoTIFF' theo mặc định).
Tham số formatOptions
Các lựa chọn cấu hình khác được thiết lập bằng tham số formatOptions. Tham số này phải là một từ điển được khoá theo các lựa chọn định dạng khác, cụ thể cho từng fileFormat như mô tả bên dưới.
GeoTIFF
GeoTIFF được tối ưu hoá cho đám mây
Để xuất GeoTIFF được tối ưu hoá cho đám mây, hãy truyền một giá trị cố định JavaScript
cho formatOptions trong đó khoá cloudOptimized được đặt thành
true. Tiếp tục ví dụ trước:
Trình soạn thảo mã (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()
Bạn có thể tải lại GeoTIFF được tối ưu hoá cho đám mây từ Cloud Storage vào Image hoặc đăng ký dưới dạng thành phần. Hãy xem phần
Tổng quan về GeoTIFF được tối ưu hoá cho đám mây (COG)
để biết đầy đủ các thông số kỹ thuật và lựa chọn xuất.
Nodata
Chỉ định giá trị nodata GeoTIFF bằng cách sử dụng khoá noData trong tham số formatOptions. Ví dụ:
Trình soạn thảo mã (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()
Lưu ý rằng giá trị nodata phải nằm trong phạm vi hợp lệ cho PixelType của hình ảnh. Bạn có thể kiểm tra PixelType bằng cách
in siêu dữ liệu hình ảnh và xem thuộc tính data_type của dải tần đầu tiên. Bạn cũng có thể thiết lập PixelType của hình ảnh bằng cách truyền dữ liệu sang một loại cụ thể bằng các phương thức hình ảnh toShort() hoặc toInt(), chẳng hạn.
TFRecord
Hãy xem trang định dạng dữ liệu TFRecord.
maxPixels
Tham số maxPixels nhằm mục đích ngăn việc vô tình tạo ra các lệnh xuất rất lớn. Nếu giá trị mặc định quá thấp đối với hình ảnh đầu ra mà bạn muốn, bạn có thể tăng maxPixels. Ví dụ:
Export.image.toDrive({ image: landsat, description: 'maxPixelsExample', crs: projection.crs, crsTransform: projection.transform, region: geometry, maxPixels: 1e9 });
Xuất tệp lớn
Nếu hình ảnh đầu ra lớn, thì hình ảnh đó sẽ được xuất dưới dạng nhiều tệp. Nếu bạn đang xuất sang GeoTIFF, thì hình ảnh sẽ được chia thành các ô. Tên tệp của mỗi
ô sẽ có dạng baseFilename-yMin-xMin, trong đó xMin và yMin là
toạ độ của mỗi ô trong hộp bao quanh tổng thể của hình ảnh đã xuất.
Nếu bạn đang xuất sang TFRecord, các tệp sẽ được nối thêm bằng -00000, -00001,... -0000N cho N+1 tệp. Việc duy trì thứ tự này là rất quan trọng nếu bạn dự định thực hiện suy luận trên các tệp và tải các dự đoán trở lại Earth Engine dưới dạng hình ảnh. Hãy xem phần tải hình ảnh lên dưới dạng tệp TFRecord
files để biết thông tin chi tiết.
Xuất hình ảnh như trong Trình soạn thảo mã
Để xuất hình ảnh như được kết xuất trên màn hình trong Earth Engine, hãy tạo hình ảnh trực quan
như minh hoạ trong phần Hình ảnh trực quan và phần Tổng hợp và
ghép ảnh. Vì Trình soạn thảo mã sử dụng
'EPSG:3857' CRS, hãy chỉ định CRS 'EPSG:3857' trong lệnh xuất để có hình ảnh
trong cùng một phép chiếu như hình ảnh hiển thị trong bản đồ của Trình soạn thảo mã. Hãy xem phần về cách định cấu hình lệnh xuất hình ảnh để biết thông tin chi tiết về cách chỉ định độ phân giải và hệ toạ độ của đầu ra.