درحال صادر کردن تصاویر

می‌توانید تصاویر را از Earth Engine در GeoTIFF یا TFRecord صادر کنید. برای گزینه‌های خروجی بیشتر، پارامترهای پیکربندی را ببینید.

راه‌اندازی نمونه

با تعریف کردن داده‌های تصویری که صادر خواهد شد شروع کنید:

ویرایشگر کد (جاوا اسکریپت)

// 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]);

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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])

سپس پارامترهای تصویر را که در صادر کردن‌های بعدی استفاده خواهد شد تعریف کنید. ما از پارامتر crs برای مشخص کردن سیستم مختصات، و از پارامتر crsTransform برای مشخص کردن دقیق شبکه پیکسل استفاده می‌کنیم. پارامتر crsTransform فهرستی از پارامترهای ماتریس تبدیل آفین به‌ترتیب ردیف-اصلی [xScale, xShearing, xTranslation, yShearing, yScale, yTranslation] است. مبدأ تصویر با مقادیر xTranslation و yTranslation تعریف می‌شود، و اندازه پیکسل تصویر با مقادیر xScale و yScale تعریف می‌شود. نمونه‌هایی از ماتریس‌های همگرا را ببینید.

ویرایشگر کد (جاوا اسکریپت)

// 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();

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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()

تنظیم scale

به‌عنوان میان‌بر، می‌توانید پارامتر scale را مشخص کنید و Earth Engine پارامتر crsTransform را برای شما محاسبه خواهد کرد. بااین‌حال، صرفاً تنظیم مقیاس تصویر، منشأ فرافکنی را مشخص نمی‌کند و ممکن است منجر به تصویری شود که نسبت‌به تصویر دیگری با همان اندازه پیکسل جابه‌جا شده است!

دلیل این تغییر احتمالی این است که از پارامتر scale برای پر کردن مقادیر xScale و yScale در crsTransform استفاده می‌شود، اما مقادیر xTranslation و yTranslation به‌گونه‌ای محاسبه می‌شوند که اگر بر مقادیر xScale و yScale مربوطه تقسیم شوند، باقی‌مانده صفر خواهد بود. این پارامترها شبکه پیکسلی را مشخص می‌کنند که مبدأ تصویر در گوشه پیکسل قرار دارد. این قرارداد با پارامترهای ترجمه مورداستفاده برخی‌از ارائه‌دهندگان داده که از شبکه‌هایی استفاده می‌کنند که از مبدأ تصویرسازی جابه‌جا شده‌اند متفاوت است. برای مثال، تصاویر Landsat ارائه‌شده توسط USGS از پارامترهای ترجمه‌ای استفاده می‌کنند که با ۱/۲ پیکسل از مبدأ تصویربرداری جابه‌جا شده‌اند (جابه‌جایی ۱۵ متری برای باندهای ۳۰ متری)، درحالی‌که تصاویر Sentinel-2 ارائه‌شده توسط ESA از پارامترهای ترجمه‌ای استفاده می‌کنند که با مبدأ تصویربرداری هم‌راستا هستند. اگر crsTransform مشخص‌شده در صادر کردن با crsTransform تصویر اصلی مطابقت نداشته باشد، پیکسل‌های خروجی دوباره نمونه‌برداری می‌شوند (به‌طور پیش‌فرض بااستفاده از نزدیک‌ترین همسایه)، که باعث می‌شود تصویر حاصل نسبت به تصویر اصلی جابه‌جا شود.

به‌طور خلاصه، اگر لازم است پیکسل‌های تصویر صادرشده را با تصویر خاصی مطابقت دهید، حتماً از پارامترهای crs و crsTransform برای کنترل کامل شبکه استفاده کنید.

به Drive

برای صادر کردن تصویر به حساب Drive، از Export.image.toDrive() استفاده کنید. برای مثال، برای صادر کردن بخش‌هایی از تصویر Landsat، منطقه‌ای را برای صادر کردن تعریف کنید، سپس Export.image.toDrive() را فراخوانی کنید:

ویرایشگر کد (جاوا اسکریپت)

// 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
});

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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()

وقتی این کد اجرا شود، تکلیف صادر کردن در برگه تکالیف «ویرایشگر کد» ایجاد خواهد شد. روی دکمه اجرا در کنار تکلیف کلیک کنید تا شروع شود. (درباره «مدیر تکلیف» در بخش ویرایشگر کد بیشتر بدانید). تصویر در حساب Drive شما با fileFormat مشخص‌شده ایجاد خواهد شد.

به فضای ذخیره‌سازی ابری

برای صادر کردن تصویر به Google Cloud Storage bucket، از Export.image.toCloudStorage() استفاده کنید. برای صادر کردن تصویر Landsat در مثال قبلی به Cloud Storage به‌جای Drive، از این کد استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

// 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
});

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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()

همانند صادر کردن به Drive، صادر کردن را از برگه تکالیف شروع کنید. اگر قصد دارید فایل‌های صادرشده را دوباره در Earth Engine بخوانید (با ee.Image.loadGeoTIFF() یا با ثبت آن‌ها به‌عنوان دارایی‌های COG-backed)، سطل باید در مکان پشتیبانی‌شده باشد.

به دارایی

برای صادر کردن تصویر به دارایی در پوشه دارایی‌های Earth Engine، از Export.image.toAsset() استفاده کنید. برای مدیریت دارایی‌های Earth Engine یا بررسی اینکه چه مقدار از سهمیه فضای ذخیره‌سازی‌تان درحال استفاده است، از مدیر دارایی استفاده کنید. مثال زیر صادر کردن بخش‌هایی از تصویر Landsat را بااستفاده از خط‌مشی‌های هرمی مختلف برای یک باند نشان می‌دهد. خط‌مشی هرمی نشان می‌دهد Earth Engine چگونه نسخه‌های با وضوح پایین‌تر دارایی را محاسبه می‌کند. در سند مقیاس، درباره نحوه مدیریت وضوح‌های چندگانه توسط Earth Engine بیشتر بدانید.

ویرایشگر کد (جاوا اسکریپت)

// 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'
  }
});

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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()

می‌توانید بااستفاده از کلید '.default'، خط‌مشی هرمی پیش‌فرضی برای هر باندی که به‌طور صریح مشخص نشده است ارائه دهید. همچنین می‌توانید فقط کلید '.default' را ارسال کنید. برای مثال، برای اینکه همه باندها به‌طور پیش‌فرض از خط‌مشی هرمی «نمونه» استفاده کنند، از {'.default': 'sample'} استفاده کنید.

پارامترهای پیکربندی

توجه داشته باشید که واژه‌نامه پارامترهای پیکربندی که به Export.image ارسال شده است شامل scale (به متر) و منطقه صادرشده به‌عنوان ee.Geometry است. تصویر صادرشده منطقه مشخص‌شده را با پیکسل‌هایی در مقیاس مشخص‌شده پوشش خواهد داد. اگر به‌طور صریح مشخص نشده باشد، CRS خروجی از اولین باند تصویر برای صادر شدن گرفته خواهد شد.

همچنین می‌توانید dimensions، crs، و/یا crsTransform تصویر صادرشده را مشخص کنید. برای اطلاعات بیشتر درباره crs و crsTransform، واژه‌نامه را ببینید. برای مثال، برای دریافت بلوکی از پیکسل‌ها که دقیقاً با منبع داده دیگری تراز شده‌اند، dimensions، crs، و crsTransform را مشخص کنید. برای دریافت بلوکی از پیکسل‌ها با اندازه ازپیش تعریف‌شده (برای مثال، تصویر کوچک ۲۵۶×۲۵۶) که منطقه‌ای را پوشش می‌دهد، dimensions و region را مشخص کنید.

می‌توانید قالب خروجی تصویر را (اگر مقصد toAsset() نباشد) با پارامتر fileFormat (به‌طور پیش‌فرض 'GeoTIFF') مشخص کنید.

پارامتر formatOptions

سایر گزینه‌های پیکربندی با پارامتر formatOptions تنظیم می‌شوند که باید واژه‌نامه‌ای باشد که با سایر گزینه‌های قالب‌بندی کلید شده است و برای هر fileFormat به‌صورت شرح‌داده‌شده در زیر اختصاصی است.

GeoTIFF

Cloud Optimized GeoTIFF (COG)

برای صادر کردن Cloud Optimized GeoTIFF (COG)، کلید cloudOptimized را در formatOptions روی true تنظیم کنید. ادامه مثال قبلی:

ویرایشگر کد (جاوا اسکریپت)

// 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
  }
});

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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()

COGs can be reloaded from Cloud Storage into an Image or registered as assets. برای مشاهده گزینه‌ها و مشخصات کامل صادر کردن، نمای کلی COG را ببینید.

Nodata

مقدار nodata در GeoTIFF را بااستفاده از کلید noData در پارامتر formatOptions مشخص کنید. برای مثال:

ویرایشگر کد (جاوا اسکریپت)

// 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,
  }
});

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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()

توجه داشته باشید که مقدار nodata باید در محدوده معتبر برای PixelType تصویر باشد. می‌توانید PixelType را با چاپ فراداده تصویر و نگاه کردن به ویژگی data_type باند اول بررسی کنید. همچنین می‌توانیدPixelType تصویر را با ارسال داده‌ها به نوع خاصی بااستفاده از روش‌های تصویر toShort() یا toInt()، برای مثال، تنظیم کنید.

TFRecord

صفحه قالب داده TFRecord را ببینید.

maxPixels

پارامتر maxPixels برای جلوگیری از ایجاد ناخواسته برون‌بردهای بسیار بزرگ درنظر گرفته شده است. اگر مقدار پیش‌فرض برای تصویر خروجی موردنظرتان خیلی کم است، می‌توانید maxPixels را افزایش دهید. برای مثال:

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

صادر کردن فایل‌های بزرگ

اگر تصویر خروجی بزرگ باشد، به‌صورت چند فایل صادر می‌شود. اگر به GeoTIFF صادر می‌کنید، تصویر به کاشی تقسیم می‌شود. نام فایل هر کاشی به‌صورت baseFilename-yMin-xMin خواهد بود که در آن xMin و yMin مختصات هر کاشی در کادر محدودکننده کلی تصویر صادرشده است.

اگر به TFRecord صادر می‌کنید، فایل‌ها با -00000، -00001،... -0000N برای فایل‌های N+1 اضافه خواهند شد. اگر قصد دارید روی فایل‌ها استنتاج انجام دهید و پیش‌بینی‌ها را به‌عنوان تصویر به Earth Engine بارگذاری کنید، حفظ این ترتیب مهم است. برای جزئیات بیشتر، بارگذاری تصاویر به‌عنوان فایل‌های TFRecord را ببینید.

صادر کردن تصاویر به همان صورتی که در «ویرایشگر کد» نشان داده می‌شوند

برای صادر کردن تصاویر به‌صورت رندرشده روی صفحه‌نمایش در Earth Engine، تصاویر دیداری‌سازی را همان‌طور که در بخش‌های تصاویر دیداری‌سازی و ترکیب‌بندی و موزاییک‌سازی نشان داده شده است ایجاد کنید. ازآنجاکه «ویرایشگر کد» از 'EPSG:3857' CRS استفاده می‌کند، CRS 'EPSG:3857' را در صادر کردن مشخص کنید تا تصویری در همان تصویرسازی که در نقشه «ویرایشگر کد» نمایش داده می‌شود دریافت کنید. برای جزئیات بیشتر درباره مشخص کردن وضوح و سیستم مختصات خروجی، بخش پیکربندی برون‌برد تصویر را ببینید.