تصدير الصور

يمكنك تصدير الصور من Earth Engine بتنسيق GeoTIFF أو TFRecord. راجِع مَعلمات الإعداد للاطّلاع على المزيد من خيارات الإخراج.

مثال على الإعداد

ابدأ بتحديد بيانات الصور التي سيتم تصديرها:

أداة تعديل الرموز (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]);

إعداد Python

يمكنك الاطّلاع على صفحة بيئة Python للحصول على معلومات حول واجهة برمجة التطبيقات Python API واستخدام geemap للتطوير التفاعلي.

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. يمكنك الاطّلاع على أمثلة على المصفوفات التقاربية.

أداة تعديل الرموز (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();

إعداد Python

يمكنك الاطّلاع على صفحة بيئة Python للحصول على معلومات حول واجهة برمجة التطبيقات Python API واستخدام geemap للتطوير التفاعلي.

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) مَعلمات نقل يتم إزاحتها بمقدار نصف بكسل من نقطة بداية الإسقاط (إزاحة بمقدار 15 مترًا للنطاقات التي يبلغ طولها 30 مترًا)، بينما تستخدم صور Sentinel-2 التي توفّرها وكالة الفضاء الأوروبية (ESA) مَعلمات نقل تتم محاذاتها مع نقطة بداية الإسقاط. إذا لم تتطابق crsTransform المحدّدة في عملية التصدير مع crsTransform الصورة الأصلية، ستتم إعادة تجميع وحدات البكسل الناتجة (باستخدام أقرب جار تلقائيًا)، ما سيؤدي إلى إزاحة الصورة الناتجة مقارنةً بالصورة الأصلية.

باختصار، إذا كنت بحاجة إلى مطابقة وحدات البكسل في الصورة التي تم تصديرها مع صورة معيّنة، احرص على استخدام المَعلمتَين crs وcrsTransform للتحكّم الكامل في الشبكة.

إلى Drive

لتصدير صورة إلى حسابك على Drive، استخدِم Export.image.toDrive(). على سبيل المثال، لتصدير أجزاء من صورة Landsat، حدِّد منطقة للتصدير، ثم استخدِم Export.image.toDrive():

أداة تعديل الرموز (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
});

إعداد Python

يمكنك الاطّلاع على صفحة بيئة Python للحصول على معلومات حول واجهة برمجة التطبيقات Python API واستخدام geemap للتطوير التفاعلي.

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 المحدّد.

إلى Cloud Storage

لتصدير صورة إلى حزمة Google Cloud Storage، استخدِم Export.image.toCloudStorage(). لتصدير صورة Landsat في المثال السابق إلى Cloud Storage بدلاً من Drive، استخدِم ما يلي:

أداة تعديل الرموز (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
});

إعداد Python

راجِع صفحة بيئة Python للحصول على معلومات حول واجهة برمجة التطبيقات Python واستخدام geemap للتطوير التفاعلي.

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، ابدأ عملية التصدير من علامة التبويب المهام. يمكن أن يؤثر الموقع الجغرافي لحزمة Cloud Storage في الأداء وتكاليف التخزين. لمزيد من المعلومات، يُرجى الاطّلاع على الأسئلة الشائعة حول الاعتبارات المتعلقة بالموقع الجغرافي.

إلى مادة العرض

لتصدير صورة إلى مادة عرض في مجلد مواد عرض Earth Engine، استخدِم Export.image.toAsset(). لإدارة مواد عرض Earth Engine أو التحقّق من مقدار مساحة التخزين المتوفّرة المستخدَمة، استخدِم أداة إدارة مواد العرض. يوضّح المثال التالي تصدير أجزاء من صورة Landsat باستخدام سياسات هرمية مختلفة للنطاق نفسه. تشير سياسة الهرمية إلى كيفية احتساب Earth Engine لإصدارات مادة العرض ذات الدقة المنخفضة. يمكنك الاطّلاع على مزيد من المعلومات حول كيفية تعامل Earth Engine مع درجات الدقة المتعددة في مستند المقياس.

أداة تعديل الرموز (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'
  }
});

إعداد Python

راجِع صفحة بيئة Python للحصول على معلومات حول واجهة برمجة التطبيقات Python واستخدام geemap للتطوير التفاعلي.

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' فقط. على سبيل المثال، لضبط جميع النطاقات تلقائيًا على سياسة الهرمية "sample"، استخدِم {'.default': 'sample'}.

مَعلمات الإعداد

لاحظ أنّ قاموس مَعلمات الضبط التي تم تمريرها إلى Export.image يتضمّن scale (بالمتر) ومنطقة التصدير كـ ee.Geometry. ستغطي الصورة التي تم تصديرها المنطقة المحددة بوحدات بكسل بالمقياس المحدد. في حال عدم تحديد نظام الإحداثيات بشكل صريح، سيتم استخدامه من النطاق الأول للصورة التي سيتم تصديرها.

يمكنك أيضًا تحديد dimensions و/أو crs و/أو crsTransform للصورة التي تم تصديرها. يمكنك الاطّلاع على المصطلحات لمزيد من المعلومات حول crs وcrsTransform. على سبيل المثال، للحصول على مجموعة من وحدات البكسل محاذية بدقة لمصدر بيانات آخر، حدِّد dimensions وcrs وcrsTransform. للحصول على مجموعة من وحدات البكسل بحجم محدّد مسبقًا (مثل صورة مصغّرة بحجم 256x256) تغطي منطقة معيّنة، حدِّد dimensions وregion.

يمكنك تحديد تنسيق إخراج الصورة (إذا لم تكن الوجهة toAsset()) باستخدام المَعلمة fileFormat ('GeoTIFF' تلقائيًا).

مَعلمة formatOptions

يتم ضبط خيارات الإعداد الأخرى باستخدام المَعلمة formatOptions، والتي يجب أن تكون قاموسًا يتم إدخاله بواسطة خيارات تنسيق أخرى، خاصة بكل fileFormat كما هو موضّح أدناه.

GeoTIFF

ملف GeoTIFF محسَّن للسحابة الإلكترونية

لتصدير ملف GeoTIFF محسَّن للسحابة الإلكترونية، يجب تمرير قيمة JavaScript حرفية لـ formatOptions يتم فيها ضبط مفتاح cloudOptimized على true. لنتابع المثال السابق:

أداة تعديل الرموز (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
  }
});

إعداد Python

راجِع صفحة بيئة Python للحصول على معلومات حول واجهة برمجة التطبيقات Python واستخدام geemap للتطوير التفاعلي.

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

يمكن إعادة تحميل ملفات GeoTIFF المحسّنة للسحابة الإلكترونية من Cloud Storage إلى Image أو تسجيلها كمواد عرض. يمكنك الاطّلاع على نظرة عامة على Cloud optimized GeoTIFF (COG) لمعرفة مواصفات وخيارات التصدير الكاملة.

Nodata

حدِّد قيمة nodata في GeoTIFF باستخدام مفتاح noData ضمن مَعلمة formatOptions. على سبيل المثال:

أداة تعديل الرموز (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,
  }
});

إعداد Python

راجِع صفحة بيئة Python للحصول على معلومات حول واجهة برمجة التطبيقات Python واستخدام geemap للتطوير التفاعلي.

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'، يجب تحديد نظام الإحداثيات المرجعي 'EPSG:3857' في عملية التصدير للحصول على صورة بالإسقاط نفسه المعروض في خريطة "أداة تعديل الرموز". يُرجى الاطّلاع على القسم المتعلّق بضبط عمليات تصدير الصور للحصول على تفاصيل حول تحديد درجة الدقة ونظام الإحداثيات للناتج.